Wie erhält man den Speicherort der ausführbaren Datei der aktuell ausgeführten JVM zur Laufzeit? Ich möchte eine andere JVM als Subprozess mit der ProcessBuilder-Klasse instanziieren.Ermitteln des Speicherortes der ausführbaren JVM-Datei zur Laufzeit
Ich bin mir bewusst, dass es die java.home
Systemeigenschaft gibt, aber dies gibt nicht den Speicherort der ausführbaren JVM-Datei an. Ich verstehe ich etwas tun könnte den Weg zu bekommen:
System.getProperties().getProperty("java.home") + File.pathSeparator + "bin" + File.pathSeparator + "java"
Dieser Code ist nicht plattformunabhängig, da der Name der ausführbaren Windows-java.exe
ist, nicht java
. Gibt es eine Möglichkeit, den Pfad der ausführbaren JVM-Datei abzurufen, der die Idiosynkrasien der Plattform berücksichtigt?
JAVA_HOME verweist auf das JDK und nicht die JRE. Sie haben also kein Glück, wenn der Benutzer das JDK nicht installiert hat. Außerdem habe ich das JDK und habe keine Umgebungsvariable. Trotzdem funktioniert alles gut. Unter Windows können Sie auch den Dateinamen ".exe" für Programme, die Sie ausführen möchten, löschen. – Joey
Mit der Eigenschaft 'java.home' System beziehe ich mich nicht auf eine Umgebungsvariable; ich meine vielmehr die Eigenschaft, die in 'System.getProperties()' existiert. Ich habe überprüft, dass JREs die System-Eigenschaft 'java.home' haben. Es ist nützlich zu wissen, dass die Erweiterung ".exe" in Windows optional ist. Vielen Dank. –
Sie können tun, was der erste Kommentar sagt und "bin/java.exe" unter Windows annehmen und "bin/java" auf anderen Plattformen annehmen. Es gibt auch "javaw.exe" zu berücksichtigen, je nachdem, was Sie versuchen zu tun. –