2014-05-06 112 views
1

我使用Spring和Hibernate,我总是得到这样的错误信息:java.lang.NoSuchMethodError:antlr.collections.AST.getLine()使用Spring和Hibernate

java.lang.NoSuchMethodError: antlr.collections.AST.getLine() 

它时,我让用户自定义情况在我的代码库中:

public interface UserRepository extends JpaRepository<User, Long> 
{ 
    @Query("select u from User u where username = ?1") 
    List<User> findByUsername(String username); 

    @Query("select u from User u where username = ?1 and password = ?2") 
    List<User> findByUsernameAndPassword(String username, String password); 
} 

如果我删除了2个查询,那么一切正常。

我还添加了ANTLR作为一个依赖:

<dependency> 
    <groupId>org.antlr</groupId> 
    <artifactId>antlr</artifactId> 
    <version>3.5.2</version>   
</dependency> 

但这是不成功的解决我的问题。

春:3.2.3 RELEASE

休眠:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>4.0.1.Final</version> 
    <scope>runtime</scope> 
</dependency> 

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-jpamodelgen</artifactId> 
    <version>1.2.0.Final</version> 
    <scope>compile</scope> 
</dependency> 
+0

,我不认为这是一个重复的,我没有使用Struts库。 –

+0

你可以请发布Spring和Hibernate的版本吗? – Ordous

+0

@Ordous我已经更新了我原来的职位与正确版本 –

回答

0

antlr.collections.AST是ANTLR V2类。

为了记录在案,这些都是ANTLR版本的包:

  • ANTLR V2,包装:antlr...
  • ANTLR v3的包:org.antlr...
  • ANTLR V4,包装:org.antlr.v4...
2

我使用Spring引导和发生这个错误,因为休眠核心-4.3.7使用ANTLR-2.7.7是由Struts的核心1.3.8使用ANTLR-2.7.2覆盖。

如果有人在Spring工具套件IDE这个问题,这是我做的:

  • 开放项目的pom.xml
  • 在解析的依赖列表依赖层次选项卡中选择ANTLR(2.7.2)
  • 在依赖层次列表相同选项卡上ANTLR-2.7.7单击鼠标右键,选择“锁定传递依赖版本...”,然后单击确定。
  • 保存的pom.xml
  • 运行应用程序再次
+0

这个解决方案为我工作过一次,在另一个场合,从本地回购删除2.7.2 jar解决了问题 – CrakC