java - 如何在 JDK 9 或更高版本中获取引导类路径

标签 java classpath java-9 java-module bootclasspath

我有一个读取系统属性 sun.boot.class.path

的类加载器应用程序

但我在 JDK 9 的发行说明中发现该属性已被删除。

 System.getProperty("sun.boot.class.path"); // In JDK 9/10 this returns null 

但我仍然想在 JDK 10 中检索此属性值。如何实现?

我期望的值如下所示:

/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfr.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/classes

仅供引用:

我不想使用 -Xbootclasspath 选项。只需要路径值。

最佳答案

删除引导。它应该像这样工作:

System.getProperty("java.class.path")

了解更多:

System 类有两个方法用于读取系统属性:getProperty 和 getProperties。

System 类有两个不同版本的 getProperty。两者都检索参数列表中命名的属性的值。两个 getProperty 方法中较简单的一个采用单个参数,即属性键。例如,要获取 path.separator 的值,请使用以下语句:

System.getProperty("路径分隔符"); getProperty 方法返回一个包含属性值的字符串。如果该属性不存在,则此版本的 getProperty 返回 null。

另一个版本的 getProperty 需要两个字符串参数:第一个参数是要查找的键,第二个参数是在找不到键或没有值时返回的默认值。例如,以下 getProperty 调用查找名为 subliminal.message 的系统属性。这不是有效的系统属性,因此此方法不会返回 null,而是返回作为第二个参数提供的默认值:“Buy StayPuft Marshmallows!”

System.getProperty("subliminal.message", "Buy StayPuft Marshmallows!"); System 类提供的最后一个访问属性值的方法是 getProperties 方法,它返回一个 Properties 对象。该对象包含一套完整的系统属性定义。

关于java - 如何在 JDK 9 或更高版本中获取引导类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50451536/

相关文章:

java - Eclipse STS 与 Java 9 的源兼容性问题

java - 我可以并且应该使用 JDK 9 来开发 Java 7/Java 8 软件吗?

java - Intellij断点报告方法抛出 'java.lang.ClassNotFoundException'异常即使变量存在

java - 从多个集合中删除一个对象

java - 创建两个不同的线程

osgi - OSGi 中的类路径扫描

java - 在 32 位和 64 位 Linux 系统上开发 Java Eclipse 项目

java - 确定 Matlab 加载的 java 类的位置

java - 为什么我不能导入 sun 包?

javascript - 如何通过ajax发送数据并且url在链接中间有一个变量值