解决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

第三种就比较麻烦,我的不太推荐,意思也是同样的。

相关文章
相关标签/搜索