java.lang.ClassNotFoundException:javax.persistence.Persistence-最少工作,基于Maven,需要示例

时间:2020-09-09 18:50:47

标签: java maven jpa

我正在尝试使用EclipseLink + JPA启动一个新的Web项目。一切正常,直到开始执行-一旦建立与数据库的连接,就会引发异常:

“ java.lang.ClassNotFoundException:javax.persistence.Persistence”。

我想我通常知道此错误的含义(java无法找到该类);但是,我无法克服它。我从StackOverflow尝试了许多示例,这些示例显示了应该导入哪些依赖项,但是它们对我都不起作用。

我创建了一个最小的无效示例。

具有以下内容的简单JSP页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <body>
  <%
    Class.forName("javax.persistence.Persistence");
  %>
  </body>
</html>

和具有依赖性的Maven

    <dependencies>
        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.derby/derbyclient -->
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derbyclient</artifactId>
            <version>10.15.2.0</version>
            <scope>runtime</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.eclipse.persistence/org.eclipse.persistence.jpa -->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa</artifactId>
            <version>2.7.7</version>
            <scope>runtime</scope>
        </dependency>

<!--        <dependency>-->
<!--            <groupId>org.eclipse.persistence</groupId>-->
<!--            <artifactId>eclipselink</artifactId>-->
<!--            <version>2.5.1</version>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>org.eclipse.persistence</groupId>-->
<!--            <artifactId>javax.persistence</artifactId>-->
<!--            <version>2.0.0</version>-->
<!--            <scope>compile</scope>-->
<!--        </dependency>-->

<!--        &lt;!&ndash; https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.1-api &ndash;&gt;-->
<!--        <dependency>-->
<!--            <groupId>org.hibernate.javax.persistence</groupId>-->
<!--            <artifactId>hibernate-jpa-2.1-api</artifactId>-->
<!--            <version>1.0.2.Final</version>-->
<!--        </dependency>-->

        <!-- https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.0-api -->
<!--        <dependency>-->
<!--            <groupId>org.hibernate.javax.persistence</groupId>-->
<!--            <artifactId>hibernate-jpa-2.0-api</artifactId>-->
<!--            <version>1.0.1.Final</version>-->
<!--        </dependency>-->

<!--        <dependency>-->
<!--            <groupId>org.eclipse.persistence</groupId>-->
<!--            <artifactId>eclipselink</artifactId>-->
<!--            <version>2.5.1</version>-->
<!--        </dependency>-->

<!--        <dependency>-->
<!--            <groupId>org.eclipse.persistence</groupId>-->
<!--            <artifactId>javax.persistence</artifactId>-->
<!--            <version>2.1.0</version>-->
<!--        </dependency>-->

<!--        <dependency>-->
<!--            <groupId>org.hibernate.javax.persistence</groupId>-->
<!--            <artifactId>hibernate-jpa-2.1-api</artifactId>-->
<!--            <version>1.0.0.Final</version>-->
<!--        </dependency>-->
        
    </dependencies>
  • 我尝试了所有这些,包括评论。 环境:IntelliJ Idea,Java 13。

其他地方可能存在问题,还是我忽略了某些地方?

如果有人可以向我发送pom.xml文件,该文件正在运行,将不胜感激。

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好,终于明白了,也许对某人有帮助。

主要问题是,尽管库是由Maven正确导入的,但并未在工件中导出。因此,执行的Web应用程序无法找到该类。

下载的.jar文件必须添加到输出工件的“ lib”文件夹中。

可能对某人有帮助。