Kann die Java 9 -Jshell verwendet werden, um Code in einer anderen JVM auszuführen?

9

Java 9 hat eine Lese-Prüfroutine für Java, genannt jshell . Ich habe gesehen, dass es von der Kommandozeile aus im Basismodus funktioniert. Kann es auch in einem Remote-Prozess verwendet werden? Mit anderen Worten, kann ich mich mit einem anderen Java-Prozess verbinden und Code-Snippets eingeben, die innerhalb dieser Laufzeit ausgeführt werden? Dies wäre eine gute Möglichkeit, den Konfigurationsstatus auf einem Anwendungsserver zu ändern, ohne ein Admin-Tool mit einer Benutzeroberfläche schreiben zu müssen.

    
Rob N 05.07.2017, 15:06
quelle

3 Antworten

6

Die einfache Antwort lautet nein, es gibt keine Möglichkeit, jshell an einen laufenden Java-Prozess anzuhängen. jshell ist eine eigenständige App, die in einer eigenen JVM ausgeführt wird.

    
Speakjava 06.07.2017, 12:59
quelle
6

Es gibt keinen offiziellen Weg dazu.

Es ist jedoch nicht schwierig, den Code erneut zu bundeln und auf einer anderen VM über einen Java-Agenten auszuführen. Dies würde jedoch nicht so gut funktionieren, wie Sie es erwarten, da es unklar ist, welcher Klassenlader die Shell verwenden soll und wie sie mit dem laufenden Programm interagieren soll.

    
Rafael Winterhalter 06.07.2017 22:47
quelle
1

Antwort Ссылка enthält eine Hacky-Lösung und einen Vorschlag, was die saubere Lösung sein könnte .

Der Teil einer anderen Antwort, der darauf hinweist, dass JShell den Code nur in seiner VM ausführt, ist falsch - JShell startet standardmäßig eine separate JVM mit Transport über JDI (zumindest unter Linux). Aber ja, ich kenne keinen offiziellen Weg, wie es geht.

    
KubaV 06.01.2018 23:22
quelle

Tags und Links