我正在尝试在Tomcat 8上运行JPA servlet。
从我的servlet中,我调用另一个Eclipse项目(JPA项目,而不是WEB项目)中名为QueryDB.class的类的方法。
但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 emf = Persistence.createEntityManagerFactory(“AutomationDB_JPA”)行引发异常;在QueryDB.class中
我正在使用Eclipse Mars和Maven。我在我的pom.xml中定义了EclipseLink:
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.6.1</version>
</dependency>
我在我的应用程序的WEB-INF / lib中有以下jar:
tomcat日志中没有其他SEVERE消息。
此设置有什么问题?
我也尝试将持久性jar添加到apache-tomcat-8.0.28 \ lib,但是出现了同样的错误。
更新:我将Persistence.createEntityManagerFactory调用移动到servlet本身并且没有得到类加载器异常。所以问题会发生变化:为什么用于QueryDB.class的类加载器与servlet的类加载器不同?另外,为什么在QueryDB.class中使用的类加载器没有看到Persistence.class,servlet的类加载器可以看到它?
答案 0 :(得分:0)
好的,我找到了解决方案。
我再也没有类加载器异常了。