解决ClassNotFoundException: org.hibernate.hql.ast.HqlToken
程序员文章站
2022-04-13 08:40:20
...
话不多说,项目整合报错,特来Mark一下.
网上资料不少,共有三种解决方案:
1、在WEB-INF目录下新建weblogic-application.xml文件
写上如下配置:
<?xml version="1.0" ?>
<weblogic-application>
<prefer-application-packages>
<package-name>antlr.*</package-name>
</prefer-application-packages>
</weblogic-application>
2、在weblogic.xml文件中插入一段配置:
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
3、在myeclipse6.5中:
依次点击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%
保存。
说下原因:
在Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,需要用到antlr,然而这个包在weblogic.jar中已经包含了较早版本的antrl包,不能兼容,就会产生一些类加载的错误,出现ClassNotFoundException: org.hibernate.hql.ast.HqlToken的异常。以上3种方法都是让weblogic加载新的antlr包。
第一种方法是让weblogic加载项目内的antlr包;
第二种方法是让weblogic加载包的时候,优先加载项目内的包;
第三种就比较麻烦,个人不太推荐,意思也是一样的。
转载于:https://my.oschina.net/u/555639/blog/226933
推荐阅读
-
IOS 中UITextField和UITextView中字符串为空和空格的解决办法
-
iOS8调用相机报警告Snapshotting a view的解决方法
-
asp.net mvc3.0安装失败如何解决
-
Python首次安装后运行报错(0xc000007b)的解决方法
-
IOS中多手势之间的冲突和解决办法
-
asp.net操作过程中常见错误的解决方法
-
IOS UIWebView获取404、504等错误问题解决方案
-
phpmyadmin出现#2003服务器无响应解决方法小结
-
Android中EditText光标在4.0中的bug及解决方法
-
mybatis中foreach报错:_frch_item_0 not found的解决方法