/ / Jak debugować wyjątek NoSuchMethodError? org.hibernate.cfg.Configuration.addAnnotatedClass (Ljava / lang / Class;) - eclipse, hibernacja, maven, wyjątek, serwlety

Jak debugować wyjątek NoSuchMethodError? org.hibernate.cfg.Configuration.addAnnotatedClass (Ljava / lang / Class;) - eclipse, hibernacja, maven, wyjątek, serwlety

Kiedy próbuję zainicjować Hibernate 4 SessionFactory w serwletu:

Configuration config;
ServiceRegistry registry;
SessionFactory factory;
config = new Configuration();
config = config.addAnnotatedClass(Star.class); // <-- Exception here.

Otrzymuję wyjątek:

SEVERE: Servlet.service() for servlet [hu.adamsan.store.TestHibernate] in context with path [/TestProject] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoSuchMethodError: org.hibernate.cfg.Configuration.addAnnotatedClass(Ljava/lang/Class;)Lorg/hibernate/cfg/Configuration;
at hu.adamsan.store.TestHibernate.doGet(TestHibernate.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at

Kiedy spojrzałem w Google, nie mogłem znaleźćrozwiązanie, ale podobne błędy występowały w przypadku niezgodności z wersją hibernacji. Wykonałem podobny projekt, z dokładnie tymi samymi zależnościami maven, z tym samym kodem inicjującym hibernację w metodzie doGet i działał.

zależności mavenów:

mysql-connector-java 5.1.26
hibernate-core 4.2.6.Final
hibernate-validator 5.0.1.Final
commons-beanutils 1.8.3
commons-collections 3.2.1
log4j 1.2.17
slf4j-api 1.7.5

Czy ktoś ma pomysł, co może być nie tak? Czy ktoś może zaoferować ogólne porady, jak obsługiwać, debugować takie niejasne błędy?

Odpowiedzi:

2 dla odpowiedzi № 1

Kiedy dostaniesz NoSuchMethodError w zewnętrznych bibliotekach zwykle jest to spowodowaneposiadanie wielu wersji tej samej zależności od ścieżki klasy. Może to być spowodowane zależnością przechodnią, a więc wykryciem jej poprzez obserwację zależności w pom.xml twojego projektu to za mało. Jeśli zrobisz mvn dependency:tree, wylistuje również wszystkie zależności przechodnie, więc szukaj wielu wersji tej samej zależności.

Być może ta sama klasa jest zaimplementowana w wielu zależnościach, więc google, aby dowiedzieć się, które słoiki zawierają. http://www.jarfinder.com/index.php/java/info/org.hibernate.cfg.Configuration