2016-09-15 6 views
0

Я использую hibernate 5.1.0 Final version. Нет Spring, Struts, Application Server ...java.lang.NoSuchMethodError: antlr.collections.AST.getLine() Я использую только спящий режим

Когда я запускаю свой метод из того же пакета, я не получаю эту ошибку. Но когда я вызываю этот метод из другого пакета, я получаю эту ошибку.

Exception in thread "main" java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I 
    at org.hibernate.hql.internal.ast.HqlSqlWalker.generateNamedParameter(HqlSqlWalker.java:1092) 
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.parameter(HqlSqlBaseWalker.java:3422) 
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1370) 
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4713) 
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:4186) 
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2130) 
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:813) 
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:607) 
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:311) 
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:259) 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:262) 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:190) 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142) 
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115) 
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76) 
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150) 
    at org.hibernate.internal.NamedQueryRepository.checkNamedQueries(NamedQueryRepository.java:155) 
    at org.hibernate.internal.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:764) 
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:474) 
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:465) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:881) 
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) 

enter image description here

+1

Это похоже на несовместимые банки. проверьте, есть ли вторая версия antlr в вашем пути к классам – Jens

ответ

1

этот getLine() метод был введен из antlr версии 2.7.3. если вы получаете NoSuchMethoedError, загрузчик классов загрузил класс AST из более низкой версии antlr.

, если вы можете отладить время выполнения, добавить точку останова в любом месте и попытаться выполнить следующий код строки

Class.forName("antlr.collections.AST").getResource("AST.class") 

это покажет вам место, класс был загружен из

0

Да, я также обнаружил, что это связано с старой версией antlr.jar.

Но в дополнение к этому, я думаю, что спящий режим 5.0 зависит от новой версии antlr.jar (2.7.7), и это так, как ожидалось. Таким образом, конфликт не был связан с спящими зависимостями, но в моем случае он исходил из speed-tools.jar. speed-tools -> struts-core -> antlr.jar (старая версия)

 Смежные вопросы

  • Нет связанных вопросов^_^