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.
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.
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.