是否可以在 JDK 17 LTS 上运行 Wildfly 10

问题描述 投票:0回答:2

我们正在使用 Wildfly 10.0.1 并计划切换到 JDK 17 LTS。

我刚刚在 Mac 上安装了新的 JDK,并下载了 Wildfly 10.0.1 的干净版本(没有部署、没有配置更改等)。

当我尝试运行 Wildfly (./standalone.sh) 时,出现以下错误:

./standalone.sh
   WARNING:  JBOSS_HOME may be pointing to a different installation - unpredictable results may occur.
             JBOSS_HOME: /opt/wildfly_clean
=========================================================================
  JBoss Bootstrap Environment
  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
=========================================================================

Exception in thread "main" javax.xml.stream.FactoryConfigurationError: Provider com.sun.xml.internal.stream.XMLInputFactoryImpl could not be instantiated: java.lang.reflect.InvocationTargetException
    at java.xml/javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:201)
    at java.xml/javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:148)
    at java.xml/javax.xml.stream.FactoryFinder.find(FactoryFinder.java:326)
    at java.xml/javax.xml.stream.FactoryFinder.find(FactoryFinder.java:223)
    at java.xml/javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:166)
    at __redirected.__XMLInputFactory.<clinit>(__XMLInputFactory.java:66)
    at __redirected.__JAXPRedirected.initAll(__JAXPRedirected.java:77)
    at org.jboss.modules.Module$1.run(Module.java:132)
    at org.jboss.modules.Module$1.run(Module.java:119)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
    at org.jboss.modules.Module.<clinit>(Module.java:119)
    at org.jboss.modules.Main.main(Main.java:385)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at java.xml/javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:190)
    ... 11 more
Caused by: javax.xml.parsers.FactoryConfigurationError: Provider __redirected.__SAXParserFactory could not be instantiated: java.lang.reflect.InvocationTargetException
    at java.xml/javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:199)
    at java.xml/javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:147)
    at java.xml/javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:227)
    at java.xml/javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:181)
    at java.xml/jdk.xml.internal.JdkXmlUtils.getSAXFactory(JdkXmlUtils.java:352)
    at java.xml/jdk.xml.internal.JdkXmlUtils.<clinit>(JdkXmlUtils.java:89)
    at java.xml/com.sun.org.apache.xerces.internal.impl.PropertyManager.initConfigurableReaderProperties(PropertyManager.java:144)
    at java.xml/com.sun.org.apache.xerces.internal.impl.PropertyManager.<init>(PropertyManager.java:78)
    at java.xml/com.sun.xml.internal.stream.XMLInputFactoryImpl.<init>(XMLInputFactoryImpl.java:51)
    ... 17 more
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at java.xml/javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:188)
    ... 25 more
Caused by: java.lang.IllegalAccessError: class __redirected.__SAXParserFactory cannot access class com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl (in module java.xml) because module java.xml does not export com.sun.org.apache.xerces.internal.jaxp to unnamed module @2b05039f
    at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392)
    at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:489)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at __redirected.__SAXParserFactory.<init>(__SAXParserFactory.java:106)
    ... 31 more

iNet上没有太多相关信息。

所以,我的问题是这些错误意味着什么?是否可以做一些事情(更改 JAVA_OPTS 等)以在 JDK 17 上成功运行 Wildfly。

是否可以在 JDK 17 上运行 Wildfly 10?

谢谢你。

java wildfly java-17 wildfly-10
2个回答
4
投票

尝试使用以下配置

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

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

原因是

根据JDK9文档

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

JEP 396 已经改变了这一点,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

WARNING:  JBOSS_HOME may be pointing to a different installation - unpredictable results may occur.

JBOSS_HOME: /opt/wildfly_clean

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

  JBoss Bootstrap Environment

  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] (Controller Boot Thread) WFLYSRV0025: WildFly Full 10.1.0.Final (WildFly Core 2.2.0.Final) started in 1339ms - Started 331 of 577 services (393 services are lazy, passive or on-demand)
© www.soinside.com 2019 - 2024. All rights reserved.