【发布时间】:2013-01-24 23:26:34
【问题描述】:
我在 pom 中有一个具有以下依赖项的网络应用:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.9.1.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.9.Final</version>
<scope>test</scope>
</dependency>
使用此配置,我在 junit 测试中收到以下错误:
java.lang.ClassFormatError:方法中的缺失代码属性是 在类文件 javax/persistence/Persistence 中不是本机或抽象的
我找到了有关此错误here 的一些信息。 所以,我删除了 'javaee-web-api' 依赖项。
之后我得到编译错误“包 javax.persistence 不存在”,等等。
所以,我将“hibernate-entitymanager”的范围更改为默认(编译)。
工作的 pom(依赖项)如下所示:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.9.1.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.9.Final</version>
</dependency>
现在一切正常,除了生成的战争包含休眠 jar,这是我不想要的。
任何建议如何解决这个问题,正确的 maven pom?
【问题讨论】: