【发布时间】:2012-07-07 17:47:48
【问题描述】:
但在其他情况下,我尝试将这些依赖项放到 Maven 中:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
</dependencies>
我正在尝试直接从 Eclipse 运行,但我不断收到错误消息: java.lang.NoClassDefFoundError: javax/persistence/Persistence
我不明白,因为它应该由 javaee-api 依赖项提供。
问候, 爱德华多
更新
现在我尝试在我的 POM 中使用这些:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.4.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.4.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.java-persistence</groupId>
<artifactId>jpa-api</artifactId>
<version>2.0.Beta-20090815</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.26</version>
<scope>provided</scope>
</dependency>
</dependencies>
一旦 Tomcat 不会为我提供任何功能。但是我仍然遇到同样的错误,这可能与依赖范围有关吗?另外,我的导入是这样的:
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Persistence;
如何告诉我的容器使用 Hibernate 实现?
【问题讨论】:
-
javaee-api 被命名为它只是一个 api 定义,但没有为此提供一个实现。我假设您需要像 Hibernate、EclipseLink 等这样的实现。此外,您将范围定义为“提供”,这意味着它将由 JBoss、Glassfish 等环境提供。
-
我明白了,我尝试提供一个 Hibernate 实现,但它不起作用。另外,我正在使用 Tomcat,它应该提供一个实现。有谁知道使用 JPA 和 Hibernate 需要哪些依赖项?
-
你是怎么做到的?你能为此展示pom吗? Tomcat 不提供 JPA 实现,因为它是一个 servlet 引擎而不是 JEE 服务器。
-
哦,我知道它不是一个完全符合 JEE 的服务器,但我认为它应该有这么多。我使用了上面的 POM。我正在尝试弄清楚如何提供休眠实现。
-
Tomcat 既不是部分 JEE 服务器也不是完整的 JEE,它只是一个简单的 Servlet 容器 (tomcat.apache.org/tomcat-7.0-doc/index.html)。如果您尝试使用休眠,我在 pom 中看不到您发布的任何休眠依赖项。对不起,没有那个我无能为力。