0

我对 JPA 和 JPQL 有疑问。我有下一个查询:

String query="SELECT c from Cliente c";
Query quer=em.createQuery("Select c from Cliente c");
List<Cliente> lista= quer.getResultList();

当我执行该操作时,出现以下错误:

[java] 线程“main”中的异常 java.lang.NoClassDefFoundError: antlr/RecognitionException [java] at org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory.createQueryTranslator(ASTQueryTranslatorFactory.java:59) [java] at org.hibernate。 engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:103) [java] 在 org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:80) [java] 在 org.hibernate.engine.query。 spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168) [java] at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221) [java] at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java: 199) [java] 在 org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1735) [java] 在 org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291) [java] at test.TestCliente.main(TestCliente.java:35) [java] 原因:java.lang.ClassNotFoundException: antlr.RecognitionException [java] at java .net.URLClassLoader$1.run(URLClassLoader.java:366) [java] at java.net.URLClassLoader$1.run(URLClassLoader.java:355) [java] at java.security.AccessController.doPrivileged(Native Method) [java ] 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) [java] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:423) [java] 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher. java:308) [java] at java.lang.ClassLoader.loadClass(ClassLoader.java:356) [java] ... 还有 9 个createQuery(AbstractEntityManagerImpl.java:291) [java] at test.TestCliente.main(TestCliente.java:35) [java] 原因:java.lang.ClassNotFoundException: antlr.RecognitionException [java] at java.net.URLClassLoader$1。 run(URLClassLoader.java:366) [java] at java.net.URLClassLoader$1.run(URLClassLoader.java:355) [java] at java.security.AccessController.doPrivileged(Native Method) [java] at java.net。 URLClassLoader.findClass(URLClassLoader.java:354) [java] at java.lang.ClassLoader.loadClass(ClassLoader.java:423) [java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) [java ] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:356) [java] ... 还有 9 个createQuery(AbstractEntityManagerImpl.java:291) [java] at test.TestCliente.main(TestCliente.java:35) [java] 原因:java.lang.ClassNotFoundException: antlr.RecognitionException [java] at java.net.URLClassLoader$1。 run(URLClassLoader.java:366) [java] at java.net.URLClassLoader$1.run(URLClassLoader.java:355) [java] at java.security.AccessController.doPrivileged(Native Method) [java] at java.net。 URLClassLoader.findClass(URLClassLoader.java:354) [java] at java.lang.ClassLoader.loadClass(ClassLoader.java:423) [java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) [java ] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:356) [java] ... 还有 9 个java:35) [java] 引起:java.lang.ClassNotFoundException: antlr.RecognitionException [java] at java.net.URLClassLoader$1.run(URLClassLoader.java:366) [java] at java.net.URLClassLoader$1.run (URLClassLoader.java:355) [java] 在 java.security.AccessController.doPrivileged(Native Method) [java] 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) [java] 在 java.lang.ClassLoader。 loadClass(ClassLoader.java:423) [java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) [java] at java.lang.ClassLoader.loadClass(ClassLoader.java:356) [java] 。 .. 还有 9 个java:35) [java] 引起:java.lang.ClassNotFoundException: antlr.RecognitionException [java] at java.net.URLClassLoader$1.run(URLClassLoader.java:366) [java] at java.net.URLClassLoader$1.run (URLClassLoader.java:355) [java] 在 java.security.AccessController.doPrivileged(Native Method) [java] 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) [java] 在 java.lang.ClassLoader。 loadClass(ClassLoader.java:423) [java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) [java] at java.lang.ClassLoader.loadClass(ClassLoader.java:356) [java] 。 .. 还有 9 个366) [java] at java.net.URLClassLoader$1.run(URLClassLoader.java:355) [java] at java.security.AccessController.doPrivileged(Native Method) [java] at java.net.URLClassLoader.findClass(URLClassLoader. java:354) [java] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:423) [java] 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) [java] 在 java.lang。 ClassLoader.loadClass(ClassLoader.java:356) [java] ... 还有 9 个366) [java] at java.net.URLClassLoader$1.run(URLClassLoader.java:355) [java] at java.security.AccessController.doPrivileged(Native Method) [java] at java.net.URLClassLoader.findClass(URLClassLoader. java:354) [java] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:423) [java] 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) [java] 在 java.lang。 ClassLoader.loadClass(ClassLoader.java:356) [java] ... 还有 9 个loadClass(Launcher.java:308) [java] at java.lang.ClassLoader.loadClass(ClassLoader.java:356) [java] ... 还有 9 个loadClass(Launcher.java:308) [java] at java.lang.ClassLoader.loadClass(ClassLoader.java:356) [java] ... 还有 9 个

CLiente 类是可访问的,但我无法进行查询。

有谁知道为什么?

编辑:类路径中是 RecognitionException 类,我可以导入他,所以我不知道是什么问题。

4

1 回答 1

4

您很可能有错误的 antlr jar。我只是在我的一个使用休眠的 maven 项目中查找它。

我有 hibernate-core-4.1.8 和 antlr-2.7.7,它在那里工作。

您始终可以在特定版本的 hibernate-core 的 pom.xml 中查找正确的版本。

请务必为 4.1.8 的正确版本号 eG 修复两个位置:

http://repo1.maven.org/maven2/org/hibernate/hibernate-core/4.1.8.Final/hibernate-core-4.1.8.Final.pom
                                                           ^ ^ ^                      ^ ^ ^

或浏览到版本概述:http ://repo1.maven.org/maven2/org/hibernate/hibernate-core/并选择您的版本,然后选择“pom.xml”。dependencies在条目部分中查找,antlr然后就可以了。

于 2013-05-12T16:33:45.897 回答