我在创建可执行jar文件时遇到问题。我通过Intellij idea X工件创建jar文件。但是当我尝试执行这个jar时,它给了我一个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/EntityNotFoundException
Caused by: java.lang.ClassNotFoundException: javax.persistence.EntityNotFoundException
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
我检查哪个包包含这个类,我在这个maven依赖项中找到了它:
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</dependency>
我检查Intellij是否将此jar添加到我的可执行jar中,然后在那里找到它。那么有人知道问题出在哪里吗?
答案 0 :(得分:0)
尝试将javaee-api-5.0-2.jar添加到您的项目中。
答案 1 :(得分:0)
确实,hibernate-jpa-2.0-api
包含此类。
这可能是类路径问题。你是否在jar中包含了所需的jar库?您的应用可以在运行时访问其他应用程序提供的jar吗?您可能会发现此问题的答案很有用:Classpath including JAR within a JAR
答案 2 :(得分:0)
JPA库是Oracle独立的外部下载。您可能需要单独下载它们并将它们安装到您当地的Maven仓库中。
您还应该在依赖关系XML中指定一个版本。