英文:
Can I get the path of the currently running java executable?
问题
假设我想从命令行运行一个Java程序,并使用以下命令:
myExes\java\java.exe AJavaProgram
如您所见,java.exe不在我的路径中,因此我是手动运行它,而不是简单地使用命令java AJavaProgram
。
我希望程序返回/打印命令中的第一个条目,在本例中,该条目是myExes\java
(在这之后包括java.exe也可以)。
有没有办法做到这一点?
最初,我认为这很简单。args[0]应该返回路径,但事实并非如此。
英文:
Suppose I want to run a java program from the command line and I use this command:
myExes\java\java.exe AJavaProgram
As you can see, java.exe is not in my path, so I am running it manually rather than simply using the command java AJavaProgram
.
I would like the program to return/print the first entry in the command, in this case, that entry is myExes\java
. (Including java.exe at the end of this is also fine).
Is there a way to do this?
Initially, I thought it would be simple. args[0] would return the path, but that is not the case.
答案1
得分: 8
ProcessHandle.current() 返回当前的 Java 进程。您可以使用它来查看进程句柄信息中的完整命令:
ProcessHandle.current().info().command().ifPresent(
cmd -> System.out.println(cmd));
英文:
ProcessHandle.current() returns the current Java process. You can use that to see the full command in the process handle’s info:
ProcessHandle.current().info().command().ifPresent(
cmd -> System.out.println(cmd));
答案2
得分: 1
你无法获取字符串"myExes\java\java.exe"
,但你可以获取Java安装的位置。
以下是在Windows 10上使用OpenJDK 14运行的结果:
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
英文:
You can't get the string "myExes\java\java.exe"
, but you can get the location of the Java installation.
The following are results for running with OpenJDK 14 on Windows 10:
System.out.println(System.getProperty("java.home"));
System.out.println(System.getProperty("sun.boot.library.path"));
Output
C:\prog\Java64\jdk-14
C:\prog\Java64\jdk-14\bin
For reference, the full path of java.exe
is:
C:\prog\Java64\jdk-14\bin\java.exe
答案3
得分: -2
这种方式怎么样?
您可以获取Java的主目录。
String path = System.getProperty("java.home");
英文:
How about this way?
You can get a java home dir.
String path = System.getProperty("java.home");
答案4
得分: -2
当您执行myExes\java\java.exe AJavaProgram
时,AJavaProgram
是传递给java.exe
的参数,而不是反过来。当您执行java AJavaProgram
时也是一样的,AJavaProgram
是传递给java
的参数。
英文:
When you do myExes\java\java.exe AJavaProgram
AJavaProgram
is the arg to java.exe
and not the reverse. Its the same when you do java AJavaProgram
, AJavaProgram
is the arg to java
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论