我希望确定 java 可执行文件的绝对路径是否来自 JDK 或 JRE。
我在 JDK 和 JRE 下的
bin/java
上尝试了以下命令
/bin/java -XshowSettings:properties -version
但是除了
user.dir
之外,输出是相同的
user.dir = /home/wladmin/goodbadjdk/jdk1.8.0_411/bin
对
user.dir = /home/wladmin/goodbadjdk/jdk1.8.0_411/jre/bin
我发现的一个区别是 JRE 文件夹具有 JDK 没有的文件夹结构
/home/wladmin/goodbadjdk/jdk1.8.0_411/jre/lib/security
。
另一个区别是 JDK 有
/home/wladmin/goodbadjdk/jdk1.8.0_411/bin/javac
但 JRE 没有。
尽管如此,确定给定 bin/java 路径中是 JRE 还是 JDK 的理想方法是什么?
使用类 ProcessHandle 类 – 自 Java 9 起可用。
ProcessHandle ph = ProcessHandle.current();
ProcessHandle.Info info = ph.info();
System.out.println(info.command()
.orElse("Command not found."));