启动时初始化失败 显示 java.lang.IllegalArgumentException: Unknown flag 0x1000 2019-10-16 14:36:21.456 [] ERROR org.springframework.web.context.ContextLoader - Context initialization failed org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/webx.xml]; nested exception is java.lang.IllegalArgumentException: Unknown flag 0x1000
环境: java -version openjdk version "11.0.4" OpenJDK Runtime Environment (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3) OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3, mixed mode, sharing)
全部log: OpenJDK 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0 2019-10-16 14:36:18.855 [] INFO com.alibaba.otter.manager.deployer.OtterManagerLauncher - ## start the manager server. WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.dom4j.io.SAXContentHandler (file:/root/otter/manager/lib/dom4j-1.6.1.jar) to method com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser$LocatorProxy.getEncoding() WARNING: Please consider reporting this to the maintainers of org.dom4j.io.SAXContentHandler WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 2019-10-16 14:36:21.456 [] ERROR org.springframework.web.context.ContextLoader - Context initialization failed org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/webx.xml]; nested exception is java.lang.IllegalArgumentException: Unknown flag 0x1000 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) ~[spring-web-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) ~[spring-web-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131) ~[spring-context-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:527) ~[spring-context-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:441) ~[spring-context-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383) ~[spring-web-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) ~[spring-web-3.1.2.RELEASE.jar:3.1.2.RELEASE]
原提问者Github用户 aikawarazu
根据提供的日志,出现了一个关于 webx.xml
的解析异常,导致上下文初始化失败。异常信息显示 java.lang.IllegalArgumentException: Unknown flag 0x1000
。
该异常通常与使用的 dom4j
版本不兼容有关,因为早期版本的 dom4j
在某些 JDK 版本中可能会引发这种异常。
尝试以下解决方法来解决这个问题:
dom4j
版本:将 dom4j
更新到兼容的版本,以解决该异常。您可以在项目的 Maven 或 Gradle 构建文件中,将 dom4j
的版本升级到较新的版本。例如,使用 Maven:<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
请根据您的具体项目配置和依赖管理工具进行更新。
检查其他依赖冲突:检查项目中其他依赖项的版本兼容性和冲突情况。某些依赖可能与 dom4j
发生冲突,导致异常出现。确保所有依赖项的版本兼容并解决冲突。
升级 JDK 版本:如果上述方法无效,可以尝试升级 JDK 版本到更高的版本。异常信息中提到了 --illegal-access=warn
,这是从 JDK 9 开始引入的非法反射访问警告。升级 JDK 版本可能有助于解决异常问题。
根据你提供的信息,这个问题可能是由于在使用DOM4J库的时候出现了不兼容的问题,导致初始化失败。为了解决这个问题,你可以尝试升级DOM4J库到最新版本,或者在你的项目中使用一个与你的JDK版本兼容的版本。
另外,你也可以检查一下你的项目中是否存在与DOM4J有冲突的库,如果有的话,可以考虑将其移除或者升级到与DOM4J兼容的版本。
最后,你可以尝试在启动时加上-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager参数,这个参数可以让JDK使用Tomcat的日志管理器,可能会有助于诊断问题。
根据您提供的日志信息,看起来是Web应用程序启动时遇到了问题。错误信息中提到了Unknown flag 0x1000
,这可能是由于应用程序使用了不兼容的JDK版本或不兼容的Java选项而导致的。
您使用的是OpenJDK 11,这应该是兼容的。但是,日志中还提到了MaxPermSize
选项,这个选项在JDK 8中已经被移除了,所以可能会导致问题。您可以尝试在启动应用程序时将MaxPermSize
选项删除,看看是否可以解决问题。
另外,日志中还提到了--illegal-access=warn
选项,这是由于JDK 9及以上版本引入了模块化系统,不推荐使用反射访问未导出的API。您可以考虑升级到JDK 9及以上版本,或禁用该选项。如果您使用的是Spring Framework 5及以上版本,可以通过在application.properties
中添加以下属性来禁用该选项:
spring.main.illegal-access=permit
最后,日志中还提到了dom4j-1.6.1.jar
,这是一个比较老的版本。如果您的应用程序依赖于该库,建议升级到最新版本,以获得更好的兼容性和性能。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。