如何让 Weblogic 10 更喜欢 myApp.war:/WEB-INF/lib/ 中的罐子而不抛出 VerifyErrors?
Posted
技术标签:
【中文标题】如何让 Weblogic 10 更喜欢 myApp.war:/WEB-INF/lib/ 中的罐子而不抛出 VerifyErrors?【英文标题】:How do I make Weblogic 10 prefer the jars in myApp.war:/WEB-INF/lib/ without throwing VerifyErrors? 【发布时间】:2011-09-10 20:00:45 【问题描述】: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 中。)
【问题讨论】:
这些是什么系统库? prefer-web-inf-classes 应该可以工作,我假设您已经清除了域内的所有临时文件夹和缓存的战争副本? 这与 Weblogic 有用地包含在您的战争类路径中的 JAXP 库有关吗? WebLogic 中有一个新选项可以在 WAR 文件中使用 perfer-application-packages。你用的是什么版本? 如果您想继续对话,请发送电子邮件至 jeffrey.west@oracle.com。比留言板更容易进行迭代工作。我们可以在这里发布结果。 【参考方案1】:tomcat-arquillian 也有这个问题。原来“xml-apis 2.0.2”在我的类路径中,它实际上是 xml-apis 1.0.b2,它太旧了,无法与需要 xml-apis 1.3.04 的 xercesImpl 2.9.1 兼容。
【讨论】:
【参考方案2】:除了在启动 Weblogic 时指定 -Djavax.xml.parsers.SAXParserFactory=[xerces sax parser factory class name]
(对于其他 JAXP 工厂,如验证 SchemaFactory 等等)之外,我一直无法令人满意地解决这个问题。
过滤/prefer-web-inf
的东西都不起作用,可能是因为 Weblogic 在启动时需要 JAXP 库,然后才读取任何 WAR/EAR 配置文件。
【讨论】:
【参考方案3】:此视频很好地概述了配置 WebLogic FilteringClassLoaders 的选项:
http://www.youtube.com/watch?v=ArLTKapjV_8
【讨论】:
以上是关于如何让 Weblogic 10 更喜欢 myApp.war:/WEB-INF/lib/ 中的罐子而不抛出 VerifyErrors?的主要内容,如果未能解决你的问题,请参考以下文章
weblogic中间件部署的项目,当访问路径找不到资源时,如何让页面不显示资源路径
java script中如何让一个alert每隔10秒出现一次