0

我们正在使用 Wildfly 10.0.1 并将切换到 jdk17 LTS。我刚刚在我的 mac 上安装了一个新的 jdk,并下载了 Wildfly 10.0.1 的干净版本(没有部署,没有配置更改等等)。当我尝试运行 Wildfly (./standalone.sh) 时,我收到以下错误:

./standalone.sh

警告:JBOSS_HOME 可能指向不同的安装 - 可能会出现不可预知的结果。

         JBOSS_HOME: /opt/wildfly_clean

==================================================== ========================

JBoss 引导环境

JBOSS_HOME: /opt/wildfly_clean

JAVA:/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home/bin/java

JAVA_OPTS: -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true

==================================================== ========================

线程“主”javax.xml.stream.FactoryConfigurationError 中的异常:无法实例化提供程序 com.sun.xml.internal.stream.XMLInputFactoryImpl:java.xml/javax.xml.stream.FactoryFinder 处的 java.lang.reflect.InvocationTargetException .newInstance(FactoryFinder.java:201) 在 java.xml/javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:148) 在 java.xml/javax.xml.stream.FactoryFinder.find(FactoryFinder.java:326 ) 在 java.xml/javax.xml.stream.FactoryFinder.find(FactoryFinder.java:223) 在 java.xml/javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:166) 在 __redirected.__XMLInputFactory.(__XMLInputFactory .java:66) 在 __redirected.__JAXPRedirected.initAll(__JAXPRedirected.java:77) 在 org.jboss.modules.Module$1.run(Module.java:132) 在 org.jboss.modules.Module$1.run(Module. java:119) 在 java.base/java.security。AccessController.doPrivileged(AccessController.java:318) at org.jboss.modules.Module.(Module.java:119) at org.jboss.modules.Main.main(Main.java:385) 原因:java.lang。在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) 在 java.base/jdk.internal .reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) 在 java.base/java.lang.reflect.Constructor.newInstance(Constructor .java:480) 在 java.xml/javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:190) ... 11 更多原因:javax.xml.parsers.FactoryConfigurationError:无法实例化提供程序 __redirected.__SAXParserFactory:java.xml/javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:199) 处 java.xml/javax.xml.parsers.FactoryFinder 处的 java.lang.reflect.InvocationTargetException。 newInstance(FactoryFinder.java:147) 在 java.xml/javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:227) 在 java.xml/javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:181)在 java.xml/jdk.xml.internal.JdkXmlUtils.getSAXFactory(JdkXmlUtils.java:352) 在 java.xml/jdk.xml.internal.JdkXmlUtils.(JdkXmlUtils.java:89) 在 java.xml/com.sun。 org.apache.xerces.internal.impl.PropertyManager.initConfigurableReaderProperties(PropertyManager.java:144) 在 java.xml/com.sun.org.apache.xerces.internal.impl.PropertyManager.(PropertyManager.java:78) 在 java .xml/com.sun.xml.internal.stream.XMLInputFactoryImpl。(XMLInputFactoryImpl.java:51) ... 17 更多 原因:java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect 的 java.lang.reflect.InvocationTargetException .NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) 在 java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java :499) 在 java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) 在 java.xml/javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:188) ... 25 更多原因:java.lang.IllegalAccessError: class __redirected.__SAXParserFactory cannot access class com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl (in module java.xml) 因为模块 java.xml 不会将 com.sun.org.apache.xerces.internal.jaxp 导出到 java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392) 处的未命名模块 @2b05039f java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674) 在 java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:489) 在 java.base/java.lang。 reflect.Constructor.newInstance(Constructor.java:480) 在 __redirected.__SAXParserFactory.(__SAXParserFactory.java:106) ... 31 更多Constructor.newInstanceWithCaller(Constructor.java:489) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) at __redirected.__SAXParserFactory.(__SAXParserFactory.java:106) ... 31 更多Constructor.newInstanceWithCaller(Constructor.java:489) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) at __redirected.__SAXParserFactory.(__SAXParserFactory.java:106) ... 31 更多

在inet中没有太多关于它的信息。所以,我的问题是这个错误是什么意思,是否有可能在 jdk 17 上成功运行 wildfly(更改 JAVA_OPTS 等)。

是否有可能在 jdk17 上运行 Wildfly 10?

谢谢你。

4

2 回答 2

1

尝试使用以下配置

  --add-opens java.xml/jdk.xml.internal=ALL-UNNAMED

这将打开此模块以供外部访问。

原因是

根据JDK9 文档

一些工具和库使用反射来访问仅供内部使用的 JDK 部分。这种非法的反射访问将在 JDK 的未来版本中被禁用。在 JDK 9 中,默认情况下是允许的,并且会发出警告。

尽管 JEP 396 包含在 JDK 17 中并且最初是从 JDK 16 交付的,但这种情况已经发生了变化

https://openjdk.java.net/jeps/396

因此,从 JDK 16 起,所有 Java 内部默认情况下都被强封装,不允许从反射进行外部访问。因此,您看到的错误

于 2021-11-27T17:23:26.397 回答
0

谢谢各位大佬指路看看。我能够在 jdk 17 LTS 中运行 Wildfly 10,将以下选项添加到启动 shell 脚本中:

JAVA_OPTS="$JAVA_OPTS --add-opens java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED"

JAVA_OPTS="$JAVA_OPTS --add-opens java.base/java.lang=ALL-UNNAMED"

JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/java.security=ALL-UNNAMED"

这是运行脚本的输出:

./standalone.sh

警告:JBOSS_HOME 可能指向不同的安装 - 可能会出现不可预知的结果。

         JBOSS_HOME: /opt/wildfly_clean

==================================================== ========================

JBoss 引导环境

JBOSS_HOME: /opt/wildfly_clean

JAVA:/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home/bin/java

JAVA_OPTS: -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true --add-opens java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens=java。 base/java.security=ALL-UNNAMED

==================================================== ========================

...... 10:34:36,425 INFO [org.jboss.as](控制器引导线程)​​WFLYSRV0025:WildFly Full 10.1.0.Final(WildFly Core 2.2.0.Final)开始于 1339 毫秒 - 开始 331 of 577服务(393 服务是惰性的、被动的或按需的)

于 2021-11-29T15:35:38.477 回答