WEBLOGIC 部署jar包冲突

时间:2021-02-17 09:13:08

问题1:java.lang.ClassNotFoundException: javax.persistence.spi.ProviderUtil

解决办法

把war中的hibernate-jpa-2.0-api-1.0.0.Final.jar删掉。

把这个jar包放到%WEBLOGIC_HOME%\jdk160_11\jre\lib\ext中,让它在Weblogic 10的JPA jar之前引用。

如果使用的是jrockit,则应该将这个jar放在%WEBLOGIC_HOME%\jrockit_160_05\jre\lib\ext中

问题原因说明

Weblogic 10.3里的jpa是1.0的(%WEBLOGIC_HOME%\modules\javax.persistence_1.0.0.0_1-0-2.jar),而我们使用的是2.0版本的。而JPA 1.0好像不支持缓存,所以,单纯的删除hibernate-jpa-2.0-api-1.0.0.Final.jar是不行的。

问题2:Caused by: org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken

解决办法

把这个antlr .jar包放到%WEBLOGIC_HOME%\jdk160_11\jre\lib\ext中,让它在Weblogic 10的JPA jar之前引用。

问题原因

    Hibernate3 采用新的基于 antlr 的 HQL/SQL 查询翻译器,在 hibernate3 中需要用到 antlr,然而这个包在 weblogic 中已经包含了 antrl 类库,所以会产生一些类加载的错误,无法找到在 war 或 ear 中的 hibernate3.jar。


问题3:org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'uploadTempDir' threw exception; nested exception is java.io.FileNotFoundException: ServletContext resource [/fileUpload/temp] cannot be resolved to absolute file path - web application archive not expanded?

解决办法

在applicationContext.xml中配置如下:

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
p:defaultEncoding="UTF-8" p:maxUploadSize="5400000" p:uploadTempDir="fileUpload/temp">

异常提示找不到这个路径。但项目里webapp下是有这个路径的。

打开war包查看,发现没有这个路径。

也就是使用maven install命令打包的时候没有将这个文件夹打包。

所以手动创建该文件夹即可。

问题4:nested exception is java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to javax.xml.parsers.DocumentBuilderFactory

解决办法

删掉工程中“xml-apis.jar”包


问题5:java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "org.apache.xerces.dom.ElementImpl.getSchemaTypeInfo()Lorg/w3c/dom/TypeInfo;" the class loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader) of the current class, org/apache/xerces/dom/ElementImpl, and the class loader (instance of <bootloader>) for interface org/w3c/dom/Element have different Class objects for the type org/w3c/dom/TypeInfo used in the signature

解决办法

删掉工程中“saaj.jar”和“xercesImpl.jar”包



参考:http://blog.csdn.net/lulongzhou_llz/article/details/38120829