Hibernate NoSuchFieldError INSTANCE aber nur mit Struts 1?
Ich bin neu in Java und Hibernate (als Schienen-und C# - Entwickler). Ja, ich habe ein test-Programm, dass funktioniert gut mit Hibernate, aber meine eigentliche web-Anwendung (Struts 1) stürzt ab mit:
SEVERE: Servlet.service() for servlet default threw exception
java.lang.NoSuchFieldError: INSTANCE
Ich bin mit:
Hibernate 3.6.1 with Annotations
Struts 1 with Apache Tiles
C3P0 connection pool
Hier ist das Programm, das eigentlich FUNKTIONIERT. Es ist ein Teil der Ausführungsplanung. Nur eine einfache JAVA-test.
public class TestUser {
public static void main(String[] args) {
SessionFactory factory = HibernateUtil.getSessionFactory();
Session session = factory.getCurrentSession();
session.beginTransaction();
String queryString = "from User where UserName = 'Quake'";
Query query = session.createQuery(queryString);
User quake = (User)query.uniqueResult();
session.getTransaction().commit();
System.out.println( quake.getEmail() );
System.out.println( "Active? " + quake.isActive() );
UserRepository userRepo = new UserRepository();
System.out.println( "User Quake: " + userRepo.findAll().get(0).getEmail() );
}
}
Funktioniert Prima. Ausgänge ein wenig sample-Daten.
Wenn ich jetzt versuche, das gleiche zu tun, im Streben, bekomme ich die exception. Dies ist, was tut NICHT ARBEITEN:
public class ListUsers extends org.apache.struts.action.Action {
/* forward name="success" path="" */
private static final String SUCCESS = "success";
/**
* This is the action called from the Struts framework.
* @param mapping The ActionMapping used to select this instance.
* @param form The optional ActionForm bean for this request.
* @param request The HTTP Request we are processing.
* @param response The HTTP Response we are processing.
* @throws java.lang.Exception
* @return
*/
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
List<String> listMsg = new ArrayList<String>();
listMsg.add("Message A");
listMsg.add("Message B");
listMsg.add("Message C");
listMsg.add("Message D");
request.setAttribute("listMsg", listMsg);
UserRepository userRepo = new UserRepository(); //CRASHES HERE (see HibernateUtil)
String email = userRepo.first().getEmail();
return mapping.findForward(SUCCESS);
}
}
Dies ist meine HibernateUtil-Klasse:
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
//Create the SessionFactory from hibernate.cfg.xml
Configuration config = new Configuration(); //THIS LINE CRASHES IN STRUTS
//Add annotated classes
config.addAnnotatedClass(User.class);
config.configure();
return config.buildSessionFactory();
} catch (Throwable ex) {
//Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed. WTFQNIL: " + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
Den Configuration config = new Configuration()
Zeile in der HibernateUtil
ist die Linie, die Abstürze, die in Struts nicht aber die test-app.
Hier ist die komplette Ausnahme dump:
Feb 24, 2011 9:51:58 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
java.lang.NoSuchFieldError: INSTANCE
at org.hibernate.type.BasicTypeRegistry.<init>(BasicTypeRegistry.java:94)
at org.hibernate.type.TypeResolver.<init>(TypeResolver.java:59)
at org.hibernate.cfg.Configuration.<init>(Configuration.java:249)
at org.hibernate.cfg.Configuration.<init>(Configuration.java:300)
at com.kencogroup.kkms.struts.utilities.HibernateUtil.buildSessionFactory(HibernateUtil.java:22)
at com.kencogroup.kkms.struts.utilities.HibernateUtil.<clinit>(HibernateUtil.java:17)
at com.kencogroup.dao.repositories.UserRepository.first(UserRepository.java:33)
at com.kencogroup.kkms.struts.actions.ListUsers.execute(ListUsers.java:52)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:662)
Was mache ich falsch?
Dank!
InformationsquelleAutor der Frage cbmeeks | 2011-02-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie es aussieht, haben Sie mehrere Versionen von Hibernate-jars im classpath.
InformationsquelleAutor der Antwort axtavt
Entfernen diese zwei-Abhängigkeit für mich gearbeitet.
Das sind meine hibernate Abhängigkeiten.
InformationsquelleAutor der Antwort Seeker
@axtavt sagt Recht.
Ich kenne Euch schon das problem gelöst ist, poste ich meine Kommentare als könnte es hilfreich sein, andere Menschen.
Wenn Sie mit maven-Abhängigkeiten, die sagen, Sie haben bereits eine eigene hibernate-Abhängigkeit. Und später, eine andere Abhängigkeit (wie org.codehaus.jackson oder drools-spring) wird Hinzugefügt, um die pom. Es könnte diesen Fehler verursachen, da org.codehaus.jackson und drools-Frühling haben Ihre eigene Abhängigkeit auf eine andere version von hibernate. ausschließen Ruhezustand, wenn Sie hinzufügen, org.codehaus.jackson oder drools-Frühling würde das prob lösen.
InformationsquelleAutor der Antwort Shasha.Zhu