在WebLogic上引起lang.ClassCastException的冲突是什么?

5 浏览
0 Comments

在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
>

0
0 Comments

在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文件已正确放置,并且所有依赖的类和方法都能正确加载和调用。

0