2010-12-27 3 views
2

Я новичок в этом форуме, а также новичок в JPA/EJB.Развернутая война с tomcat не может вызывать java.lang.NoClassDefFoundError: javax/persistence/PersistenceException

Я пытаюсь развернуть файл .war с небольшим приложением на сервере tomcat. Приложение использует JTA для связи с Derby db.

Когда я запускаю и развертываю приложение и затмеваюсь на сервере tomcat, работающем в eclipse, все работает отлично, но когда я экспортирую файл .war и пытаюсь просмотреть приложение, он бросает java.lang.ClassNotFoundException: javax .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).

Интерфейс API Java Persistence JAR (содержащий класс PersistenceException) можно найти здесь:

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

В дополнении к упаковке библиотеки JPA в вашей войне файл, убедитесь, что вы упаковка груза необходимые банки Дерби в вашем военном файле. В вашем случае, похоже, вам понадобится derbyclient.jar. –

+0

Спасибо @ddewaele, это сработало для меня. –

0

Если вы используете Maven для управления зависимостями проекта, то в том числе следующего в моих pom.xml работали для меня:

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

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

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