2011-06-08 12 views
9

Weblogic類加載器似乎比我的戰爭的WEB-INF/lib/中的庫更喜歡系統庫。如何使Weblogic 10更喜歡myApp.war中的jar:/ WEB-INF/lib /而不拋出VerifyErrors?

我試過設置在WEB-INF/weblogic.xml以下,沒有成功:

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

這正好給了我很多VerifyErrors的:

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)。

+0

這些系統庫是什麼? – 2011-06-08 12:17:11

+0

prefer-web-inf-classes應該可以工作,我假設你已經清除了域內戰爭的所有臨時文件夾和緩存副本? – JoseK 2011-06-08 12:44:43

+0

這是否與Weblogic有用地包含在戰爭類路徑中的JAXP庫有關? – artbristol 2011-06-08 14:39:07

回答

5

我從來沒有能夠啓動WebLogic時圓滿解決這個問題,除了通過指定-Djavax.xml.parsers.SAXParserFactory=[xerces sax parser factory class name](依此類推爲其他JAXP工廠如驗證的SchemaFactory)。

沒有一個過濾/ prefer-web-inf的東西工作,可能是因爲Weblogic在啓動任何WAR/EAR配置文件之前需要啓動JAXP庫。

0

我和tomcat-arquillian也有這個問題。結果「xml-apis 2.0.2」出現在我的classpath中,它實際上是xml-apis 1.0.b2,而且它太舊了,無法與需要xml-apis 1.3.04的xercesImpl 2.9.1兼容。