我试图运行在Tomcat 8javax.persistence罐子没有加载到tomcat的
从我的servlet我叫(JPA项目名为QueryDB.class一类位于另一个Eclipse项目的方法JPA的servlet,不是WEB项目)。
但是Tomcat的抛出
SEVERE: Servlet.service() for servlet [MyRESTService] in context with path [/AutomationWeb] threw exception [org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: javax/persistence/Persistence] with root cause
java.lang.ClassNotFoundException: javax.persistence.Persistence
at java.net.URLClassLoader$1.run(Unknown Source)
...
例外是在线路的EntityManagerFactory电动势= Persistence.createEntityManagerFactory( “AutomationDB_JPA”)抛出;在QueryDB.class
我使用Eclipse Mars与Maven。我的EclipseLink定义我的pom.xml:
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.6.1</version>
</dependency>
我已经按照我的应用程序的WEB-INF/lib目录罐子:
- 的EclipseLink-2.6.1.jar
- javax.persistence-里面
2.1.0.jar,它的javax /持久/ Persistence.class有在Tomcat日志中没有其他严重的消息。
这个设置有什么问题?
我也尝试添加持久性jar到apache-tomcat-8.0.28 \ lib,但得到了同样的错误。
更新:我将Persistence.createEntityManagerFactory调用移动到servlet本身,并没有得到类加载器异常。所以问题会改变:为什么用于QueryDB.class的类加载器与servlet的类加载器不同?另外,为什么QueryDB.class中使用的类加载器没有看到由servlet的类加载器看到的Persistence.class?