如何让Weblogic 10更喜欢myApp.war:/ WEB-INF / lib /中的jar而不抛出VerifyErrors?

时间:2011-06-08 12:13:49

标签: java weblogic classloader web-inf

Weblogic类加载器似乎比我的战争WEB-INF/lib/中的库更喜欢系统库。

我已尝试在WEB-INF/weblogic.xml中设置以下内容,但未成功:

<weblogic-web-app>
    <container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
</weblogic-web-app>

这只是给了我很多验证错误:

exception is java.lang.VerifyError: (class: org/apache/xerces/parsers/AbstractSAXParser, method: parse signature: (Lorg/xml/sax/InputSource;)V) Incompatible object argument for function call
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1003)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:907)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
        Truncated. see log file for complete stacktrace

(我试图避免将WAR打包到EAR中。)

3 个答案:

答案 0 :(得分:5)

除了在启动Weblogic时指定-Djavax.xml.parsers.SAXParserFactory=[xerces sax parser factory class name](等其他JAXP工厂,如验证SchemaFactory)之外,我无法令人满意地解决这个问题。

过滤/ prefer-web-inf没有任何工作,可能是由于Weblogic在启动之前需要JAXP库才能读取任何WAR / EAR配置文件。

答案 1 :(得分:1)

此视频概述了配置WebLogic FilteringClassLoaders的选项:

http://www.youtube.com/watch?v=ArLTKapjV_8

答案 2 :(得分:0)

我也有tomcat-arquillian这个问题。事实证明“xml-apis 2.0.2”在我的类路径中,实际上是xml-apis 1.0.b2,而且太旧而不能与需要xml-apis 1.3.04的xercesImpl 2.9.1兼容。