1. 程式人生 > >WEBLOGIC 部署jar包衝突

WEBLOGIC 部署jar包衝突

問題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