缺少Java EE实现

时间:2011-10-29 12:23:31

标签: unit-testing maven glassfish java-ee-6

我仍然无法让我的单元测试工作。当我执行测试时,我在类文件ClassFormatException 中的本地或抽象方法中得到javax/ejb/EJBAccessException Absent Code属性。这是我写的pom.xml

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

但它不起作用。如果我在文本编辑器中打开文件repo/org/glassfish/javaee/6.0/javaee-6.0.jar,它只包含一些HTML文本。你知道什么是错的吗?我在哪里可以找到合适的javaee-6.0.jar?如果我打开glassfish3/glassfish/lib中的那个,它只包含一些pom.xml,仅此而已。

我的数据层由通过会话bean访问的实体组成。该层作为JAR打包和部署。错误是表示层的问题。没有EJB。但我正在使用Spring MVC。它在开始时加载控制器。而且有几个控制器是EJB客户端。这应该不重要,但其中一个包含行import javax.ejb.EJBAccessException。当(假设)Spring加载器加载此类时,加载过程失败并出现上述异常。因此,我需要Java EE实现来进行测试。

但这个问题实际上更为笼统。这不是第一次,我遇到了这个错误:依赖JAR无效,当我在里面看时,我看到了常规的HTML代码。

顺便说一句:我很震惊,我还没有找到整个互联网上这个基本问题的正确答案。

1 个答案:

答案 0 :(得分:1)

本地存储库已损坏,jar个文件不应包含HTML个内容。也许您的一个项目从损坏的远程存储库中下载了损坏的工件。您当前的项目可能很好但另一个使用腐败的镜像等。

我会删除整个repo/org/glassfish/javaee/6.0/目录。如果需要,Maven将再次下载工件。删除后运行mvn clean install并检查org/glassfish/javaee/6.0/javaee-6.0.jar的网址。如果下载的工件(即jar)再次包含HTML,它会显示哪个是损坏的存储库。

无论如何,我认为你不需要这种依赖,因为javax.ejb.EJBAccessException在API(javaee-api.jar)中。 (它不在central。)  我将删除glassfish依赖项并尝试先运行测试。如果仍然失败,我会使用java -verbose:class运行测试并检查哪个jar包含已加载的EJBAccessException.class