2010-12-27 4 views
2

私はこのフォーラムで初めて、JPA/EJBには初めてです。展開されたwar to tomcatは、java.lang.NoClassDefFoundErrorをスローすることはできません:javax/persistence/PersistenceException

小さなアプリケーションを含む.warファイルをTomcatサーバーに展開しようとしています。アプリケーションはDerby dbと通信するためにJTAを使用しています。

eclipseから実行してeclipseでEclipseを実行すると、すべてが正常に動作しますが、.warファイルをエクスポートしてアプリケーションをブラウズしようとすると、java.lang.ClassNotFoundExceptionがスローされます。 .persistence.PersistenceException。

私の永続性ファイルは、次のようになります

<?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> 

とスローエラーは次のようになります。

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) 

は、誰もがこの前に遭遇していますか?

敬具 ヘンリク

答えて

7

あなたはjavax.persistence.PersistenceExceptionクラス(JPA仕様の一部)を欠落しているように見えます。

(PersistenceExceptionクラスを含む)れるJava Persistence APIのJARは、ここで見つけることができます:

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

このJARは、あなたのWEB-INF/libフォルダにする必要があります。

Eclipseの設定に応じて、これらのJARを(ライブラリを定義することによって)自動的にTomcatにプッシュした可能性があります。

しかし、PersistenceExceptionをロードしようとするという事実は、このClassNotFoundExceptionを解消すると別の例外(実際の例外)が発生する可能性が高いことを意味します。

+1

WARファイルにJPAライブラリをパッケージ化することに加えて、あなたがパッケージ化されていることを確認してくださいあなたの戦争ファイルに必要なダービージャー。あなたのケースでは、derbyclient.jarが必要になるようです。 –

+0

ありがとう@ddewaele、それは私のために働いた。 –

0

あなたはpom.xmlが私のために働いていた私には、以下を含め、プロジェクトの依存関係を管理するためのMavenを使用している場合:

<!-- https://mvnrepository.com/artifact/javax.persistence/persistence-api --> 
<dependency> 
    <groupId>javax.persistence</groupId> 
    <artifactId>persistence-api</artifactId> 
    <version>1.0.2</version> 
</dependency> 
関連する問題