Je joue avec l'API JShell du JDK9.Existe-t-il un autre moyen de lancer jvm à distance?
Actuellement, l'API JShell lance automatiquement la JVM distante en interne. Au lieu de démarrer le processus automatiquement, je veux séparer les deux processus.
Remarque: Je comprends que je peux modifier les options de la machine virtuelle. Mais je veux voir si la VM peut même être exécutée sur une machine différente.
Le contrôle d'exécution par défaut est éventuellement reaches this place in code.
Si je spécifie le lancement, il utilise automatiquement le connecteur com.sun.jdi.CommandLineLaunch
, qui lance réellement le programme Java par définition. Si je spécifie non-lancement, il utilise com.sun.jdi.SocketListen
comme je m'y attendais, une fois qu'il a démarré le socket serveur, automatiquement starts a remote vm and connects to this socket. Je pense que c'est inattendu.
Autres choses que j'essayées,
Shell jshell = JShell.builder()
.executionEngine("jdi:hostname(localhost),launch(false)")
.build();
jshell.eval("1+2");
je me attends ce échouer ou être bloqué jusqu'à ce qu'un processus distinct commence.
Existe-t-il une autre méthode pour spécifier les connecteurs ou ne pas démarrer une machine virtuelle Java? (Je ne suis pas intéressé par 'local' non plus)
Certaines options faciles comme la possibilité de spécifier com.sun.jdi.RawCommandLineLaunch
comme connecteur acceptant la commande personnalisée ou d'utiliser le connecteur d'écoute socket et d'attendre que l'autre processus se connecte.
Merci.