java.lang.ClassNotFoundException:JPA找不到javax.persistence.Persistence

时间:2014-09-03 08:19:01

标签: java jpa

使用JPA API练习。我收到了一个错误

java.lang.ClassNotFoundException: javax.persistence.Persistence cannot be found

我的代码如下:

EntityManagerFactory emf;
emf = Persistence.createEntityManagerFactory("mail");
EntityManager em = emf.createEntityManager();
Query query = em.createQuery("SELECT v FROM Version v");
List<Version> versions = query.getResultList();

emf = Persistence.createEntityManagerFactory("mail");

处的错误

任何解决方案?

3 个答案:

答案 0 :(得分:22)

您正在尝试设置独立的JPA项目。为此,您需要一个JPA提供者jar。两个更受欢迎的提供商是Eclipselink和Hibernate。如果您正在使用maven,则可以在其实现中添加依赖项。

  • 对于Eclipselink

    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.5.1</version>
    </dependency>
    
  • 对于Hibernate

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.6.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.3.6.Final</version>
    </dependency>
    

如果你没有使用maven,你可以从他们的网站下载他们的实现并将它放在你的类路径中。

有些JPA快速入门建议只添加JPA API(仅限接口声明)依赖项与maven。

    <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>

此方法仅在服务器环境中成功,因为服务器将在运行时提供适当的实现。

答案 1 :(得分:1)

右键单击项目->属性->搜索“部署程序集”->添加Maven依赖关系。

答案 2 :(得分:0)

如果使用 maven ,在 Pom.xml 中添加以下依赖

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>

然后干净安装maven