当前位置: 首页 > 面试题库 >

针对Java EE 6 API进行测试

家浩瀚
2023-03-14
问题内容

我编写了JAX-RS的附加内容,并将Java EE 6 API包含为Maven依赖项。

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>

然后我有一个测试用例:

  @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));
  }

但我得到一个错误:

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

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

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

您可以使用此jar编译代码,但是当然不能使用它运行应用程序,因为它仅包含Java EE 5
API,并且不包含任何方法主体。如果尝试运行,则会出现以下异常:

线程“主”中的异常java.lang.ClassFormatError:类文件javax / mail /
Session中不是本机或抽象的方法中的缺少Code属性

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

我试图用test范围添加Jersy,但是没有用。

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>${jersey-version}</version>
    <scope>test</scope>
</dependency>

如何测试仅依赖于官方Java EE API的软件?

提供程序(Jersey)需要放在pom.xml中的API(javeee-api) 之前

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>${jersey-version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>

问题答案:

不确定是否可以解决您的问题,但是GlassFish Embedded提供了Java EE 6实现。将此添加到您的pom.xml

<project>
  ...
  <repositories>
    <repository>
      <id>glassfish-extras-repository</id>
      <url>http://download.java.net/maven/glassfish/org/glassfish/extras</url>
    </repository>
  </repositories>
  ...
  <dependencies>
    <dependency>
      <groupId>org.glassfish.extras</groupId>
      <artifactId>glassfish-embedded-all</artifactId>
      <version>3.0.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>6.0</version>
      <scope>provided</scope>
    </dependency>
    ...
  </dependencies>
  ...
</project>

据申报是很重要的glassfish-embedded-all神器 之前javaee-api



 类似资料:
  • 问题内容: 在斯威夫特,我怎么能写这样的情况,一个开关语句测试值被切换对抗的内容 可选 ,跳过如果可选包含案例? 这是我想象的样子: 如果我只是这样写,编译器会抱怨没有解包,但是如果我通过添加到末尾来显式解包,那么我当然会在包含的任何时间收到运行时错误。对我来说,添加而不是有意义(我想是基于可选链接的精神),但并不能消除编译器错误(即,实际上并未解开可选)。 问题答案: 可选就像这样: 因此,您可

  • 我是XSD新手,不知道为什么我的XSD没有进行验证。我收到以下错误: s4s-elt-无效-内容.1:“参数信息”的内容无效。元素“复杂类型”无效、放错位置或出现过于频繁。 cvc复合型。2.4。d: 发现以元素“exception”开头的无效内容。此时不需要任何子元素。 XML: XSD: 我错过了什么吗?我想通过使用复杂类型并引用它们来分解它,从而使其更容易...

  • 我无法使用jhipster对web层进行单元测试(根据spring gs指南): 上面的单元测试在green-field spring boot项目的情况下成功,但在基于green-field spring boot的jhipster项目的情况下失败: 在FlightResource的jhispter项目(springboot-with-jhipster)中运行单元测试时,我得到了:

  • 我将Django REST框架工具包与Django1.11一起使用,并尝试根据URL过滤结果。以下是我的设置: models.py: 我希望通过我的包模型的name字段来过滤结果,而不是使用以下内容: 我怎么才能做到这一点呢?

  • 本文向大家介绍如何对水壶进行测试相关面试题,主要包含被问及如何对水壶进行测试时的应答技巧和注意事项,需要的朋友参考一下 参考回答: (同快手对水杯的测试) 功能 (1)水倒水壶容量的一半 (2)水倒规定的安全线 (4)水壶容量刻度与其他水壶一致 (5)盖子拧紧水倒不出来 (6)烫手验证 性能 (1)使用最大次数或时间 (2)掉地上不易损坏 (3)盖子拧到什么程度水倒不出来 (4)保温时间长 (5)

  • 使用文档中的以下示例: 如何创建并运行针对此迁移的测试,以确认数据已正确迁移?