我仍然无法让我的单元测试工作。当我执行测试时,我在类文件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代码。
顺便说一句:我很震惊,我还没有找到整个互联网上这个基本问题的正确答案。答案 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
。