我们正在使用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
=========================================================================
未能实例化提供程序com.sun.xml.internal.stream.XMLInputFactoryImpl :无法实例化线程"main“javax.xml.stream.FactoryConfigurationError中的异常:在java.xml/javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:148)处的java.xml/javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:201)处的java.lang.reflect.InvocationTargetException在java.xml/javax.xml.stream.FactoryFinder.find(FactoryFinder.java:处的java.xml/javax.xml.stream.FactoryFinder.find(FactoryFinder.java:326)处223)在java.xml/javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:166) at __redirected.__XMLInputFactory.(__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.java:119)在org.jboss.modules.Main.main(Main.java:385)由:在java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法处的java.lang.reflect.InvocationTargetException )在java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)处的java.lang.reflect.InvocationTargetException在java处引起。java.xml/javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:190)处的base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ... 11更多原因:无法实例化java.xml/javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:199)处的java.xml/javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:147)处的javax.xml.parsers.FactoryConfigurationError: Provider __redirected.__SAXParserFactory : java处的java.lang.reflect.InvocationTargetException.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.(JdkXmlUtils.java:89) at java.xml/com.sun.org.apache.xerces.internal.impl.PropertyManager.initConfigurableReaderProperties(PropertyManager.java:144) at java.xml/com.sun.orgjava.xml/com.sun.xml.internal.stream.XMLInputFactoryImpl.(XMLInputFactoryImpl.java:51)的.apache.xerces.internal.impl.PropertyManager.(PropertyManager.java:78) ... 17更多原因: java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法的java.lang.reflect.InvocationTargetException ) java的java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)的java.lang.reflect.InvocationTargetException.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更多原因: com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl :类__redirected.__SAXParserFactory无法访问类java.xml (在模块java.xml中),因为模块java.xml不能导出com.sun将未命名的模块@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.(__SAXParserFactory.java:106)发送到.org.apache.xerces.internal.jaxp ... 31更多信息
在inet中没有太多关于它的信息。所以,我的问题是,这个错误意味着什么,是否可以执行commething (更改JAVA_OPTS等)以在JDK17上成功运行wildfly。
有没有可能在jdk17上运行Wildfly 10?
谢谢。
发布于 2021-11-27 17:23:26
尝试使用以下配置
--add-opens java.xml/jdk.xml.internal=ALL-UNNAMED这将打开此模块以供外部访问。
原因是
根据JDK9 doc的说法
一些工具和库使用反射来访问仅供内部使用的部分。此非法反射访问将在JDK的未来版本中禁用。在JDK 9中,默认情况下是允许的,并且会发出警告。
然而,随着JEP 396的出现,这一点发生了变化,JEP 396包含在JDK 17中,最初是从JDK 16提供的
https://openjdk.java.net/jeps/396
因此,从JDK16开始,默认情况下所有java内部都是强封装的,并且不允许从反射进行外部访问。因此,您看到的错误
发布于 2021-11-29 15:35:38
感谢你们给我指引方向。我能够在jdk 17 LTS中运行Wildfly 10,并在启动shell脚本中添加以下选项:
JAVA_OPTS="$JAVA_OPTS --添加-打开java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED“
JAVA_OPTS="$JAVA_OPTS --添加-打开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 --添加-打开java.base--添加-打开java.base/java.lang=-server-未命名的java.base
=========================================================================
.10:34:36,425 INFO org.jboss.as WFLYSRV0025: WildFly Full 10.1.0 Full (WildFly核心2.2.0 Full)启动时间为1339ms -启动了577个服务中的331个(393个服务是惰性的、被动的或按需的)
https://stackoverflow.com/questions/70129530
复制相似问题