2017-07-05 33 views
8

Java 9 có vòng lặp đọc-eval-in cho Java, được gọi là jshell. Tôi đã nhìn thấy nó hoạt động ở chế độ cơ bản của nó, từ dòng lệnh. Nó cũng có thể được sử dụng trong một quá trình từ xa? Nói cách khác, tôi có thể kết nối với một quá trình Java khác và nhập các đoạn mã để chạy trong thời gian chạy đó không? Đây sẽ là một cách hay để thay đổi trạng thái cấu hình trong máy chủ ứng dụng mà không cần phải viết công cụ quản trị với giao diện người dùng.Java 9 jshell có thể được sử dụng để chạy mã trong một JVM khác không?

+2

đó là một câu hỏi tuyệt vời! – Eugene

+0

Tôi thực sự thích câu hỏi này; bởi vì đó thực sự là những gì tôi mong đợi. Sự hiểu biết của tôi là * clojure * ví dụ chính xác hỗ trợ điều này. Một REPL hoạt động trong * JVM * riêng của nó, trông giống như * lame * – GhostCat

Trả lời

4

Câu trả lời đơn giản là không, không có cách nào để đính kèm jshell vào tiến trình Java đang chạy. jshell là một ứng dụng độc lập chạy trong JVM của riêng nó.

+1

vâng, tất cả chúng ta đều biết điều đó, nhưng liệu nó có khả thi không? trong một bản phát hành trong tương lai hoặc bất kỳ kế hoạch để có điều này ở tất cả? đây là những gì tôi mong đợi từ một câu trả lời ... – Eugene

+0

Rõ ràng, chúng ta không biết tất cả, đó là lý do tại sao câu hỏi được hỏi. Tôi trả lời chính xác những gì được hỏi. – Speakjava

5

Không có cách nào chính thức để làm như vậy.

Tuy nhiên, không khó để giải mã lại mã và chạy nó trên một máy ảo khác thông qua tác nhân Java. Tuy nhiên, điều này sẽ không hoạt động tốt như bạn mong đợi vì nó không rõ trình nạp lớp nào nên sử dụng và cách nó nên tương tác với chương trình đang chạy.

0

Trả lời https://stackoverflow.com/a/48132747/1561345 bao gồm giải pháp hacky và đề xuất, giải pháp sạch sẽ là gì.

Phần của câu trả lời khác cho thấy rằng JShell chỉ chạy mã trong VM của nó là sai - JShell khởi chạy một JVM riêng biệt với việc vận chuyển qua JDI theo mặc định (ít nhất là trên Linux). Nhưng vâng, tôi không biết một cách chính thức làm thế nào để làm điều đó.

Các vấn đề liên quan