XIncludeAwareParserConfiguration与XMLParserConfiguration不兼容。

7

在AIX平台上部署ear文件时,我遇到了这个错误。同样的ear文件在Windows/Linux平台上运行良好。

Caused by: java.lang.ClassCastException: org.apache.xerces.parsers.XIncludeAwareParserConfiguration incompatible with org.apache.xerces.xni.parser.XMLParserConfiguration
    at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
    at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source)
    at weblogic.xml.jaxp.WebLogicDocumentBuilderFactory.newDocumentBuilder(WebLogicDocumentBuilderFactory.java:140)
    at com.bea.security.xacml.policy.PolicyUtils.getRootNode(PolicyUtils.java:54)
    at com.bea.security.xacml.policy.PolicyUtils.read(PolicyUtils.java:86)
    at com.bea.security.providers.xacml.store.BasePolicyStore.getAbstractPolicy(BasePolicyStore.java:1251)
    at com.bea.security.providers.xacml.store.BasePolicyStore.readPolicy(BasePolicyStore.java:1231)
    at com.bea.security.providers.xacml.store.BasePolicyStore.readPolicy(BasePolicyStore.java:1114)
    at com.bea.security.providers.xacml.entitlement.PolicyManager.listPolicies(PolicyManager.java:747)
    at weblogic.security.providers.xacml.DeployableAuthorizationProviderV2Helper.startDeployPolicies(DeployableAuthorizationProviderV2Helper.java:90)
    at weblogic.security.providers.xacml.authorization.XACMLAuthorizationProviderImpl.startDeployPolicies(XACMLAuthorizationProviderImpl.java:269)
    at com.bea.common.security.internal.legacy.service.PolicyDeployerProviderImpl$V2Adapter.startDeployPolicies(PolicyDeployerProviderImpl.java:69)
    at com.bea.common.security.internal.service.PolicyDeploymentServiceImpl$DeploymentHandlerImpl.<init>(PolicyDeploymentServiceImpl.java:143)
    at com.bea.common.security.internal.service.PolicyDeploymentServiceImpl$DeploymentHandlerImpl.<init>(PolicyDeploymentServiceImpl.java:129)
    at com.bea.common.security.internal.service.PolicyDeploymentServiceImpl$ServiceImpl.startDeployPolicies(PolicyDeploymentServiceImpl.java:97)
    at weblogic.security.service.WLSPolicyDeploymentServiceWrapper$DeploymentHandlerImpl.<init>(WLSPolicyDeploymentServiceWrapper.java:70)
    at weblogic.security.service.WLSPolicyDeploymentServiceWrapper$DeploymentHandlerImpl.<init>(WLSPolicyDeploymentServiceWrapper.java:60)
    at weblogic.security.service.WLSPolicyDeploymentServiceWrapper.startDeployPolicies(WLSPolicyDeploymentServiceWrapper.java:40)
    at weblogic.security.service.AuthorizationManager.startDeployPolicies(AuthorizationManager.java:489)
    at weblogic.servlet.security.internal.WebAppSecurityWLS.<init>(WebAppSecurityWLS.java:72)
    at weblogic.servlet.security.internal.ServletSecurityManager.<init>(ServletSecurityManager.java:39)
    at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletContext.java:416)
    at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletContext.java:464)
    at weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:414)
    at weblogic.servlet.internal.WebAppModule.registerWebApp(WebAppModule.java:901)
    at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:345)

1
请确保您的JAR版本兼容。 - Bozho
1
这不会是与环境变量问题相关的,例如 http://issues.apache.org/jira/browse/XERCESJ-1263,有这样的可能吗? - VonC
你在AIX上使用哪个JDK?你是否使用了认可机制? - Pascal Thivent
1个回答

8
你的类路径可能混杂着不同版本的Xerces API JAR文件。清理类路径。对于Web应用程序,包括Webapp/WEB-INF/libAppserver/lib/JRE/lib文件夹。

最常见的原因是Webapp/WEB-INF/libAppserver/lib中散布着不同版本的Xerces JAR。假设应用服务器库中的那些是默认提供的和正确的版本,则应该摆脱Web应用程序库中的那些。你不应该在Web应用程序库中有任何应用服务器特定的JAR。


Weblogic默认使用父类加载器优先策略,因此在webapp的WEB-INF/lib中具有特定于应用服务器的JAR包不应该是问题...除非OP使用<prefer-web-inf-classes>weblogic.xml部署描述符中配置了EAR。但是这似乎并不是问题,因为该EAR在Linux/Windows上运行良好。所以我更愿意看JVM级别的问题。 - Pascal Thivent
这让我想起了Websphere是如何做的。不过它有两个可配置选项:application(默认;应用服务器库优先)和module(Web应用程序库优先)。 - BalusC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接