8

在我在 java 8 上运行的应用程序中,我使用-bootclasspath:p将 jar 添加到引导类路径。在 java 9 中,该选项被删除。在 java 9 中做同样的事情的替代方法是什么?

4

2 回答 2

8

您可以使用-Xbootclasspath/a. 请参阅发布说明,其中指出:-

在此版本中,引导类路径大部分已被删除。java -Xbootclasspath-Xbootclasspath/p选项已被删除。

javac -bootclaspath选项只能在编译到 JDK 8 或更早版本时使用。系统属性sun.boot.class.path已被删除。

依赖于覆盖平台类进行测试的部署-Xbootclasspath/p将需要更改为使用 JEP 261--patch-module中记录的选项。

-Xbootclasspath/a选项不变。

于 2018-01-08T10:59:22.377 回答
0

-bootclasspath:p将 jar 中的类添加到默认引导类路径的开头(前置)。JVM 9 或更高版本不再支持它。

-bootclasspath:a将 jar 中的类添加到默认引导类路径的末尾(附加)。JVM 9 或更高版本支持此选项。 https://docs.oracle.com/cd/E15289_01/JRCLR/optionx.htm#i1021218

在我的情况下,当我按此顺序声明变量时:

JAVA_OPTS="$SOME_OPT"

JAVA_OPTS="-javaagent:../agent.jar -Xbootclasspath/a:../agent-boot.jar $JAVA_OPTS"

我抓住了 classNotFoundException。当我颠倒顺序时:

JAVA_OPTS="-javaagent:../agent.jar -Xbootclasspath/a:../agent-boot.jar $JAVA_OPTS"

JAVA_OPTS="$SOME_OPT"

ClassNotFound 异常消失。

于 2022-01-03T10:26:41.990 回答