2014-05-06 76 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