2010-12-27 2 views
2

ich neu in diesem Forum bin und auch neue zu JPA/EJB.Eingesetzte Krieg Kater nicht gibt java.lang.NoClassDefFoundError: javax/Ausdauer/PersistenceException

Ich versuche, eine WAR-Datei enthält eine kleine Anwendung auf einen Tomcatbediener einzusetzen. Die Anwendung verwendet JTA, um mit der Derby-Datenbank zu kommunizieren.

Wenn ich die Anwendung ausführen und aus dem Eclipse-Top der Tomcat-Server in Eclipse ausführen, funktioniert alles perfekt, aber wenn ich eine WAR-Datei exportieren und versuchen, die Anwendung zu durchsuchen, löst es eine java.lang.ClassNotFoundException: javax .persistence.PersistenceException.

Meine Ausdauer-Datei sieht wie folgt aus:

<?xml version="1.0" encoding="UTF-8"?> 

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    version="1.0"> 

    <persistence-unit name="lab1" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
     <!--<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>--> 
     <class>entity.Team</class> 
     <class>entity.Gambler</class> 
     <class>entity.Bet</class> 
     <class>entity.Game</class> 
     <class>entity.Gameday</class> 
      <properties> 
     <property name="openjpa.ConnectionURL" value="jdbc:derby://localhost:1527/hean0901;create=true"/> 
      <property name="openjpa.ConnectionDriverName" value="org.apache.derby.jdbc.ClientDriver"/> 
      <property name="openjpa.ConnectionUserName" value="lab1"/> 
      <property name="openjpa.ConnectionPassword" value="user"/> 
      <property name="lab1.log" value="DefaultLevel=TRACE"/> 
      <property name="nonTransactionalDataSource" value="true"/> 
      <!-- <property name="openjpa.RuntimeUnenhancedClasses" value="supported"/>--> 
      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" /> 
      <property name="eclipselink.logging.level" value="FINEST"/> 
     </properties> 
    </persistence-unit> 

</persistence> 

und der Fehler geworfen sieht wie folgt aus:

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 1 

1: <jsp:forward page="Setupcheck.do" /> 


Stacktrace: 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
root cause 

javax.servlet.ServletException: Servlet execution threw an exception 
org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:706) 
org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:677) 
org.apache.jsp.index_jsp._jspService(index_jsp.java:54) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
root cause 

java.lang.NoClassDefFoundError: javax/persistence/PersistenceException 
model.Setupcheck.processRequest(Setupcheck.java:31) 
model.Setupcheck.doGet(Setupcheck.java:43) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:706) 
org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:677) 
org.apache.jsp.index_jsp._jspService(index_jsp.java:54) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
root cause 

java.lang.ClassNotFoundException: javax.persistence.PersistenceException 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
model.Setupcheck.processRequest(Setupcheck.java:31) 
model.Setupcheck.doGet(Setupcheck.java:43) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:706) 
org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:677) 
org.apache.jsp.index_jsp._jspService(index_jsp.java:54) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

Hat vorher jemand begegnet?

Mit freundlichen Grüßen Henrik

Antwort

7

Sie scheinen die javax.persistence.PersistenceException Klasse (Teil der JPA-Spezifikation) zu fehlen.

http://repo1.maven.org/maven2/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar

benötigt Diese JAR im WEB-INF/lib Ordner sein:

Die Java Persistence API JAR (die PersistenceException Klasse enthält) sind hier zu finden.

Je nachdem, wie Sie habe Setup Eclipse, es schob wahrscheinlich diese JAR-Dateien auf Tomcat automatisch (durch eine Bibliothek definiert wird).

jedoch die Tatsache, dass es die PersistenceException höchstwahrscheinlich bedeutet, zu laden versucht, dass eine andere Ausnahme (die wirkliche Ausnahme) wird auftreten, sobald Sie diese ClassNotFoundException lösen.

+1

Neben Verpacken der JPA-Bibliotheken in Ihrer WAR-Datei, stellen Sie sicher, dass Sie das sind Verpackungs Notwendige Derby Gläser in Ihrer Kriegsdatei. In deinem Fall sieht es so aus, als würdest du denbyclient.jar brauchen. –

+0

Danke @ddewaele, es hat für mich funktioniert. –

0

Wenn Sie Maven verwenden Projektabhängigkeiten für die Verwaltung, dann einschließlich der folgenden in meinem pom.xml für mich gearbeitet:

<!-- https://mvnrepository.com/artifact/javax.persistence/persistence-api --> 
<dependency> 
    <groupId>javax.persistence</groupId> 
    <artifactId>persistence-api</artifactId> 
    <version>1.0.2</version> 
</dependency> 
Verwandte Themen