在WebLogic上引起lang.ClassCastException的冲突是什么?
在WebLogic上引起lang.ClassCastException的冲突是什么?
当WebLogic服务器尝试自动部署我的应用程序时,出现以下错误:
lang.ClassCastException:
weblogic.xml.jaxp.RegistryDocumentBuilderFactory无法转换为
javax.xml.parsers.DocumentBuilderFactory
我进行了一些研究,一些帖子说我应该从类路径中删除xml-apis.jar。这实际上缓解了问题,但之后我的应用程序无法正常工作。所以我想知道是否还有其他方法可以修复这个问题。
我正在使用WebLogix 12.1.3.0.0,Java 1.7和Spring 3.2.3。
相关问题:ClassCastException while parsing XML with WebLogic
完整的堆栈跟踪:
<用户定义的侦听器org.springframework.web.context.ContextLoaderListener失败:org.springframework.beans.factory.BeanDefinitionStoreException:从ServletContext资源[/WEB-INF/applicationContext.xml]解析XML文档时出现意外异常;嵌套异常是java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory无法转换为javax.xml.parsers.DocumentBuilderFactory。 org.springframework.beans.factory.BeanDefinitionStoreException:从ServletContext资源[/WEB-INF/applicationContext.xml]解析XML文档时出现意外异常;嵌套异常是java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory无法转换为javax.xml.parsers.DocumentBuilderFactory at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) Truncated. see log file for complete stacktrace Caused By: java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactory无法转换为javax.xml.parsers.DocumentBuilderFactory at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source) at org.springframework.beans.factory.xml.DefaultDocumentLoader.createDocumentBuilderFactory(DefaultDocumentLoader.java:89) at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:70) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) Truncated. see log file for complete stacktrace > <用户定义的侦听器org.springframework.web.context.ContextLoaderListener失败:java.lang.IllegalStateException:BeanFactory未初始化或已关闭 - 在通过ApplicationContext访问bean之前调用'refresh'。 java.lang.IllegalStateException:BeanFactory未初始化或已关闭 - 在通过ApplicationContext访问bean之前调用'refresh' at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:171) at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1090) at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1064) at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1010) at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:559) Truncated. see log file for complete stacktrace > <无法将应用程序"nsi-client"的激活状态设置为true。 weblogic.application.ModuleException:java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory无法转换为javax.xml.parsers.DocumentBuilderFactory at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140) at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:211) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) Truncated. see log file for complete stacktrace Caused By: java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactory无法转换为javax.xml.parsers.DocumentBuilderFactory at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source) at org.springframework.beans.factory.xml.DefaultDocumentLoader.createDocumentBuilderFactory(DefaultDocumentLoader.java:89) at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:70) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) Truncated. see log file for complete stacktrace >
在WebLogic上出现lang.ClassCastException的冲突是由于以下原因引起的:缺少xml-apis.jar文件或该文件没有正确放置。
解决方法是将xml-apis.jar文件放置在$JRE_HOME/lib/endorsed目录中。其中$JRE_HOME是指WebLogic JRE(JDK)所在的目录。
在mac 10.11.6 El Capitan系统中,定位$JRE_HOME/lib/endorsed路径的方法如下:
- 导航到/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib目录。
- 在该目录下创建endorsed文件夹。
当启动WebLogic时,可能会出现两个异常:
1. java.lang.NoSuchMethodError: javax.xml.transform.TransformerFactory.setFeature(Ljava/lang/String;Z)V
2. java.lang.IllegalStateException: Unable to perform operation: post construct on weblogic.t3.srvr.servicewrappers.WSATTransactionService
为了解决这些异常,需要确保xml-apis.jar文件已正确放置,并且所有依赖的类和方法都能正确加载和调用。