在Java8和更早的版本中,存在使用背书目录(java.endorsed.dirs)的机制,该目录是覆盖JDK内部实现的库的集合。
我如何在Java-9中解决这个问题?作为背书的目录在哪里被删除了?
发布于 2017-09-26 14:46:48
在JDK9中,您可以使用 或将 JAR文件放在类路径中。
java.endorsed.dirs系统属性和lib/endorsed目录不再存在。如果检测到任何一个,javac编译器和java启动器都将退出。
如果其中任何一个存在于以下位置,您将最终找到错误:
不支持
/lib/批注。模块化形式的认可标准和独立API将通过可升级模块的概念得到支持。错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。
这些认可的标准覆盖机制已被删除,以获得Modular Run-Time Images,现在将使用模块化映像。
模块化镜像由模块组成,而不是JAR文件。展望未来,通过upgradeable modules的概念,只支持模块化形式的认可的标准和独立的API。
发布于 2020-02-27 07:19:24
这是一个特定的解决方案,但可能是可以推广的。在系统版本:java10.14.6 (18G3020)内核版本:Darwin18.7.0我安装了OpenJDK 64位服务器VM (build 13.0.2+8,混合模式,共享)和macOS _ee_sdk-8u1。
我在执行xjc时遇到了这个错误:
[foo@bar bin 14:47:27] sudo ./xjc
-Djava.endorsed.dirs=./../modules/endorsed is not supported. Endorsed standards and standalone APIs
in modular form will be supported via the concept of upgradeable modules.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.enter code here我编辑了~/glassfish5/glassfish/bin/xjc中的最后一行,删除了-Djava.endorsed.dirs位:
exec "$JAVA" -Djava.endorsed.dirs="$AS_INSTALL_LIB/endorsed" -cp "$AS_INSTALL_LIB/webservices-osgi.jar:$AS_INSTALL_LIB/javax.xml.rpc-api.jar:$AS_INSTALL_LIB/jaxb-osgi.jar" com.sun.tools.xjc.Driver "$@"之后
exec "$JAVA" -cp "$AS_INSTALL_LIB/webservices-osgi.jar:$AS_INSTALL_LIB/javax.xml.rpc-api.jar:$AS_INSTALL_LIB/jaxb-osgi.jar" com.sun.tools.xjc.Driver "$@"在此之后,~/glassfish5/glassfish/bin/xjc按预期工作
发布于 2018-04-19 21:44:21
我也遇到过同样的问题,Tomcat 9不支持高于8的Java版本,请查看bin/catalina.sh了解更多信息。
JCP JAVA_ENDORSED_DIRS (可选)包含一些jars的冒号分隔目录列表,以允许替换在
之外创建的API(即来自W3C的DOM和SAX )。它还可用于更新XML解析器实现。仅Java <= 8支持。缺省为$CATALINA_HOME/批注。
https://stackoverflow.com/questions/46419496
复制相似问题