Maven测试具有JavaEE6依赖关系的SOAP的问题
在maven项目的测试中尝试使用SOAP时,我发现了一些问题,该项目将JavaEE6API作为提供的作用域依赖项 重要事实 我知道 我知道如果我想使用它,我应该导入任何规范的实现 ,不是EE SOAP模拟类包含在中,我认为它们不应该包含在中 这在JavaEE6中发生,但是 如果我删除依赖项,测试就可以正常工作 当使用7.0版本的API时,一切正常 例外情况 聚甲醛构型 失败的解决方案 我已经尝试了几种解决方案,为了清晰起见,我不会一一发布,但会根据要求发布: 我已经在Maven中尝试了每一种方法,但没有一种方法在测试中禁用该库 另外,尝试将库作为插件的依赖项排除 将rj.jar作为一个优先级高于javaeeapi的系统依赖项也不起作用 不必要的变通办法Maven测试具有JavaEE6依赖关系的SOAP的问题,maven,soap,java-ee-6,Maven,Soap,Java Ee 6,在maven项目的测试中尝试使用SOAP时,我发现了一些问题,该项目将JavaEE6API作为提供的作用域依赖项 重要事实 我知道 我知道如果我想使用它,我应该导入任何规范的实现 ,不是EE SOAP模拟类包含在中,我认为它们不应该包含在中 这在JavaEE6中发生,但是 如果我删除依赖项,测试就可以正常工作 当使用7.0版本的API时,一切正常 例外情况 聚甲醛构型 失败的解决方案 我已经尝试了几种解决方案,为了清晰起见,我不会一一发布,但会根据要求发布: 我已经在Maven中尝试了每一种方法
我使用7.0依赖项进行了测试,但根据策略,这是不可接受的,因此我需要修复此问题。我使用maven surefire插件的属性classpathDependencyExcludes使其正常工作:
我将把这篇文章留在这里,因为我相信我不会是唯一一个在某个时候遇到这种情况的人。在运行java类时,我遇到了与下面相同的问题。 例外情况: java.lang.ClassFormatError:类文件javax/xml/messaging/urlenpoint中非本机或抽象的方法中缺少代码属性 使用Java8作为运行时,我最终包含了正确的版本7.0,并且程序在使用版本6之前就开始正常工作
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
奇怪的是,经过几个小时的努力,我是如何在10分钟内找到自己的解决方案的,可能只是因为写下这个问题,让我的头脑冷静下来,让一切都恢复正常。
<dependencies>
...
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
...
</dependencies>
<build>
...
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
...
</plugin>
...
</plugins>
...
</build>
<build>
...
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
...
<configuration>
<classpathDependencyExcludes>
<classpathDependencyExcludes>javax:javaee-api</classpathDependencyExcludes>
</classpathDependencyExcludes>
...
</configuration>
...
</plugin>
...
</plugins>
...
</build>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>