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