相关疑难解决方法(0)

针对Java EE 6 API进行测试

我写了一个JAX-RS的附加内容,并将Java EE 6 API作为Maven依赖项包含在内.

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

然后我有一个小测试用例:

  @Test
  public void testIsWriteable() {
    class SpecialViewable extends Viewable {
      public SpecialViewable() {
        super("test");
      }
    }
    FreeMarkerViewProcessor processor = new FreeMarkerViewProcessor(null);
    assertTrue(processor.isWriteable(SpecialViewable.class, null, null,
            MediaType.WILDCARD_TYPE));
  }
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/ws/rs/core/MediaType
    ...
Run Code Online (Sandbox Code Playgroud)

如果我将Jersey包含为JAX-RS实现而不是Java EE API,那么一切都很好.

感谢BalusC的暗示,我知道我猜到了什么:Java EE 6只是一个没有方法体的API: 来自java.net博客

您可以使用此jar编译代码,但当然您无法使用它运行应用程序,因为它只包含Java EE 5 API并且不包含任何方法体.如果你试图运行,你会得到这个例外:

线程"main"中的异常java.lang.ClassFormatError:类文件javax/mail/Session中非本地或抽象的方法中的Absent Code属性

为了执行Java EE 5应用程序,您仍然需要Java EE 5容器,例如GlassFish应用程序服务器.

我试图用test范围添加Jersy,但它没有用.

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version> …
Run Code Online (Sandbox Code Playgroud)

java junit maven-2 unit-testing java-ee

48
推荐指数
2
解决办法
2万
查看次数

标签 统计

java ×1

java-ee ×1

junit ×1

maven-2 ×1

unit-testing ×1