Как получить местоположение исполняемого файла текущей запущенной JVM во время выполнения? Я хотел бы создать экземпляр другого JVM в качестве подпроцесса, используя класс ProcessBuilder.Определение местоположения исполняемого файла JVM во время выполнения
Я знаю, что есть свойство java.home
System, но это не указывает местоположение исполняемого файла JVM. Я понимаю, что я мог бы сделать что-то вроде этого, чтобы получить путь:
System.getProperties().getProperty("java.home") + File.pathSeparator + "bin" + File.pathSeparator + "java"
Этот код не зависит от платформы, потому что имя исполняемого файла в Windows является java.exe
, не java
. Есть ли способ получить путь к исполняемому файлу JVM, который учитывает особенности платформы?
JAVA_HOME указывает на JDK, а не на JRE. Таким образом, вам не повезло, когда пользователь не установил JDK. Также I * do * имеет JDK и не имеет переменной окружения. Но все работает отлично. Также в Windows вы можете сбросить '.exe' на имя файла для программ, которые вы хотите запустить. – Joey
По свойству 'java.home' System, я имею в виду не переменную среды; скорее, я имею в виду свойство, которое существует в 'System.getProperties()'. Я проверил, что JRE имеют свойство System 'java.home'. Полезно знать, что расширение '.exe' является необязательным в Windows. Благодарю. –
Вы можете сделать wath первый комментарий говорит и предположить «bin/java.exe» в Windows и предположить «bin/java» на других платформах. Существует также «javaw.exe» для рассмотрения в зависимости от того, что вы пытаетесь сделать. –