1

我有一个 EJB 类,它使用 EJB 的 TimerService 和 TimerConfig 创建一个计时器。

当我运行 junit 来测试类时,会看到以下错误:

java.lang.ClassFormatError:类文件 javax/ejb/TimerConfig 中非本机或抽象方法中的缺失代码属性

我正在为 ejb 使用以下 maven 依赖项:

<dependency>
   <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
   <groupId>org.glassfish</groupId>
   <artifactId>javax.ejb</artifactId>
   <version>3.1.1</version>
   <scope>test</scope>
</dependency>

任何建议如何解决这个问题?

4

1 回答 1

2

来自 javax:javaee-api 依赖项的类中的方法是空壳——它们没有真正的实现。这些类仅用于编译,而不用于运行时。

为了执行,需要真正的实现。因为无论如何都要使用 GlassFish,所以使用以下依赖项是合适的解决方案:

<dependency>
    <groupId>org.glassfish.extras</groupId>
    <artifactId>glassfish-embedded-all</artifactId>
    <version>3.1.1</version>
    <scope>test</scope>
</dependency>
于 2012-11-21T18:44:35.373 回答