Могу ли я узнать путь к исполняемому файлу java? - PullRequest
0 голосов
/ 29 мая 2020

Предположим, я хочу запустить программу java из командной строки и использую эту команду:

myExes\java\java.exe AJavaProgram

Как видите, java .exe не находится на моем пути, поэтому я я запускаю его вручную, а не просто с помощью команды java AJavaProgram.

Я бы хотел, чтобы программа возвращала / печатала первую запись в команде, в данном случае это запись myExes\java. (Включая java .exe в конце этого файла тоже нормально).

Есть ли способ сделать это?

Сначала я думал, что это будет просто. args [0] вернет путь, но это не так.

Ответы [ 4 ]

2 голосов
/ 29 мая 2020

ProcessHandle.current () возвращает текущий Java процесс. Вы можете использовать это, чтобы увидеть полную команду в информации дескриптора процесса:

ProcessHandle.current().info().command().ifPresent(
    cmd -> System.out.println(cmd));
0 голосов
/ 29 мая 2020

Вы не можете получить строку "myExes\java\java.exe", но вы можете получить местоположение установки Java.

Ниже приведены результаты для работы с OpenJDK 14 на Windows 10:

System.out.println(System.getProperty("java.home"));
System.out.println(System.getProperty("sun.boot.library.path"));

Вывод

C:\prog\Java64\jdk-14
C:\prog\Java64\jdk-14\bin

Для справки полный путь к java.exe:

C:\prog\Java64\jdk-14\bin\java.exe
0 голосов
/ 29 мая 2020

Когда вы делаете, myExes\java\java.exe AJavaProgram AJavaProgram - это аргумент java.exe, а не наоборот. То же самое, когда вы делаете java AJavaProgram, AJavaProgram - это аргумент для java.

0 голосов
/ 29 мая 2020

Как насчет этого?
Вы можете получить java домашний каталог

String path = System.getProperty("java.home");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...