openjdk文档“ JEP 261:模块系统” 指出:
“一个相关选项-Xbootclasspath/a
,允许将文件和目录附加到默认的引导程序类路径。此选项以及java.lang.instrument
包中的相关API,有时由检测代理使用,因此出于兼容性考虑,仍在运行时支持。
它的值(如果已指定)通过JDK特定的系统属性jdk.boot.class.path.append
报告。”
但是,当我尝试使用此功能时,它不起作用。具体来说,我正在使用Java代理进行检测。
在 JDK7 和 JDK8 上一切正常。在 JDK9 + 上,-Xbootclasspath/a
似乎可以正常工作,但是系统属性jdk.boot.class.path.append
始终为null
。
在Java 7/8上:
String bootclasspath = System.getProperty(`sun.boot.class.path`);
按预期工作。
在Java 9上:
String bootclasspath = System.getProperty("jdk.boot.class.path.append");
总是返回空字符串。
我添加了一些调试代码以转储所有系统属性,但似乎没有此类属性。
我尝试了jdk-9.0.4
和jdk-11.0.3
,结果相似。
关于如何在JDK9 +上获取bootclasspath的任何想法?