如何在 java 9 中将 jar 添加到引导类路径
How to add a jar to the boot classpath in java 9
在 java 8 上运行的应用程序中,我使用 -bootclasspath:p
将 jar 添加到引导类路径。在java9中,该选项被移除。在 java 9 中做同样的事情的替代方法是什么?
您可以使用 -Xbootclasspath/a
。请参阅 release notes,其中指出:-
The boot class path has been mostly removed in this release. The java
-Xbootclasspath
and -Xbootclasspath/p
options have been removed.
The javac -bootclaspath
option can only be used when compiling to JDK 8 or
older. The system property sun.boot.class.path
has been removed.
Deployments that rely on overriding platform classes for testing
purposes with -Xbootclasspath/p
will need to changed to use the
--patch-module
option that is documented in JEP 261.
The -Xbootclasspath/a
option is unchanged.
-bootclasspath:p
将 jar 中的 classes 添加到默认 bootstrap class 路径的开头(前置)。 JVM 9 或更高版本不再支持它。
-bootclasspath:a
将 jar 中的 classes 添加到默认 bootstrap class 路径的末尾(附加)。 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 异常消失。
在 java 8 上运行的应用程序中,我使用 -bootclasspath:p
将 jar 添加到引导类路径。在java9中,该选项被移除。在 java 9 中做同样的事情的替代方法是什么?
您可以使用 -Xbootclasspath/a
。请参阅 release notes,其中指出:-
The boot class path has been mostly removed in this release. The java
-Xbootclasspath
and-Xbootclasspath/p
options have been removed.The
javac -bootclaspath
option can only be used when compiling to JDK 8 or older. The system propertysun.boot.class.path
has been removed.Deployments that rely on overriding platform classes for testing purposes with
-Xbootclasspath/p
will need to changed to use the--patch-module
option that is documented in JEP 261.The
-Xbootclasspath/a
option is unchanged.
-bootclasspath:p
将 jar 中的 classes 添加到默认 bootstrap class 路径的开头(前置)。 JVM 9 或更高版本不再支持它。
-bootclasspath:a
将 jar 中的 classes 添加到默认 bootstrap class 路径的末尾(附加)。 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 异常消失。