我有一个方法来获得表的第一个结果.
public T LoadFirstData()
{
T object = null;
try {
startOperation();
Query query = session.createQuery("from " + type.getName());
object = (T) query.list().get(0);
}
catch (HibernateException e)
{
HandleException(e);
} finally
{
HibernateUtil.Close(session);
}
return object;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行该方法时,我有例外
Exception in thread "main" java.lang.NoClassDefFoundError: antlr/ANTLRException
at org.hibernate.hql.ast.ASTQueryTranslatorFactory.createQueryTranslator(ASTQueryTranslatorFactory.java:58)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:98)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:98)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1760)
at DataAccess.WKS.Repositories.WksRepositoryBase.LoadAllData(WksRepositoryBase.java:193)
at Run.main(Run.java:13)
Caused by: java.lang.ClassNotFoundException: antlr.ANTLRException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 9 more
Run Code Online (Sandbox Code Playgroud)
我在网上搜索了解决方案,我发现所有这些都缺少了antlr jar.但我已经将jar添加到我的项目中.
罐子列表:
ant-antlr.jar
antlr-4.2.2.jar
antlr-runtime-4.2.2.jar
asm-attrs.jar
asm.jar
cglib-2.2.jar
commons-collections-3.1.jar
commons-logging-1.0.4.jar
dom4j-1.6.1.jar
hibernate-3.1.jar
hibernate3-client.jar
hibernate3.jar
javassist.jar
jboss-client.jar
jta.jar
log4j-1.2.15.jar
ojdbc14-jdbc4.jar
ojdbc14.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
Run Code Online (Sandbox Code Playgroud)
我能知道我还错过了什么吗?
你的项目中有错误的antlr.
你需要的就是这个.我希望它有帮助:)
<dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
<version>2.7.7</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我也看到你使用的是旧版本的hibernate.最新的一个是
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.5.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)