解決ClassNotFoundException: org.hibernate.hql.ast.HqlToken

話很少說,項目整合報錯,特來Mark一下. web


網上資料很多,共有三種解決方案: windows


一、在WEB-INF目錄下新建weblogic-application.xml文件 app

寫上以下配置: dom

 

<?xml version="1.0" ?>
<weblogic-application>
	<prefer-application-packages>
		<package-name>antlr.*</package-name>
	</prefer-application-packages>
</weblogic-application>
 

 

二、在weblogic.xml文件中插入一段配置: eclipse

 

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

 

 

三、在myeclipse6.5中: spa

依次點擊windows-preferences-myeclipse workbench-servers-weblogic-weblogic10.x-path,在prepend to classpath選項中,把hibernate要用到的包antlr.jar添加到weblogic的classpath中。
這樣在weblogic即可以經過myeclipse正常啓動,以上提到的問題解決。

若是想要經過weblogic自帶的腳原本運行:
將工程裏的antlr.jar拷貝到weblogic的wlserver_10.3\server\lib文件夾下面,在domains\base_domain\bin裏找到startWebLogic.cmd文件,找到:
set CLASSPATH=%SAVE_CLASSPATH% 
 在下面增長:
@REM hibernate3  
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr.jar  
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH% 
保存。


說下緣由: .net

在Hibernate3.0 採用新的基於ANTLR的HQL/SQL查詢翻譯器,須要用到antlr,然而這個包在weblogic.jar中已經包含了較早版本的antrl包,不能兼容,就會產生一些類加載的錯誤,出現ClassNotFoundException: org.hibernate.hql.ast.HqlToken的異常。以上3種方法都是讓weblogic加載新的antlr包。 hibernate

第一種方法是讓weblogic加載項目內的antlr包; 翻譯

第二種方法是讓weblogic加載包的時候,優先加載項目內的包; code

第三種就比較麻煩,我的不太推薦,意思也是同樣的。

相關文章
相關標籤/搜索