【问题标题】:Is it possible to run Wildfly 10 on new jdk17是否可以在新的 jdk17 上运行 Wildfly 10
【发布时间】:2021-11-26 20:03:55
【问题描述】:

我们正在使用 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。无头=真

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

线程“主”javax.xml.stream.FactoryConfigurationError 中的异常:无法实例化提供程序 com.sun.xml.internal.stream.XMLInputFactoryImpl:java.lang.reflect.InvocationTargetException 在 java.xml/javax.xml.stream.FactoryFinder.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) 在 org.jboss.modules.Module.(Module.java:119) 在 org.jboss.modules.Main.main(Main.java:385) 引起:java.lang.reflect.InvocationTargetException 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 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:Provider __redirected.__SAXParserFactory 无法实例化:java.lang.reflect.InvocationTargetException 在 java.xml/javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:199) 在 java.xml/javax.xml.parsers.FactoryFinder.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.lang.reflect.InvocationTargetException 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 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.parsers.FactoryFinder.newInstance(FactoryFinder.java:188) ... 25 更多 原因:java.lang.IllegalAccessError:类 __redirected.__SAXParserFactory 无法访问类 com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl(在模块 java.xml 中),因为模块 java.xml 不导出 com.sun。 org.apache.xerces.internal.jaxp 到未命名的模块 @2b05039f 在 java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392) 在 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 更多

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

是否可以在 jdk17 上运行 Wildfly 10?

谢谢。

【问题讨论】:

  • 临时解决方法:尝试将--add-opens java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED添加到JAVA_OPTS

标签: wildfly-10 java-17


【解决方案1】:

尝试使用以下配置

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

打开这个模块供外部访问。

原因是

根据JDK9 doc

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

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

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

所以从 JDK 16 起,所有的 java 内部默认都是强封装的,不允许通过反射进行外部访问。因此你看到的错误

【讨论】:

    【解决方案2】:

    感谢各位大神指点。 我能够在 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 毫秒内启动 - 启动了 577 个服务中的 331 个(393 个服务是惰性的) ,被动或按需)

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2017-10-31
    • 2016-11-02
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 2012-02-10
    • 2019-01-22
    相关资源
    最近更新 更多