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

时间:2018-05-21 15:00:04

标签: 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选项。只需要路径值。

1 个答案:

答案 0 :(得分:0)

删除启动。它应该像那样工作:

<强> System.getProperty("java.class.path")

了解更多信息:

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

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

System.getProperty(&#34; path.separator&#34); getProperty方法返回包含属性值的字符串。如果该属性不存在,则此版本的getProperty将返回null。

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

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