首页 文章

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

提问于
浏览
10

我正在使用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"); 行的错误

有解决方案吗

2 回答

  • 1

    您正在尝试设置一个独立的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快速入门建议仅使用maven添加JPA API(仅限接口声明)依赖项 .

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

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

  • 20

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

相关问题