Eclipse 原因:java.lang.NoClassDefFoundError:通过Arquilliqn为Maven项目运行JUnit测试时链接失败
因此,我尝试在学校项目中使用Eclipse上的Arquilian对maven项目进行测试,但是,当我尝试通过mvn clean test运行测试时,我得到以下堆栈跟踪: Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 3.361 sec {"Operation step-1" => {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"testCapAnalogique.war\".POST_MODULE" => "WFLYSRV0153: Failed to process phase POST_MODULE of deployment \"testCapAnalogique.war\" Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class fr.esisar.locVoiture.stateless.CapAnalogiqueStateless with ClassLoader ModuleClassLoader for Module \"deployment.testCapAnalogique.war\" from Service Module Loader Caused by: java.lang.NoClassDefFoundError: Failed to link fr/esisar/locVoiture/entities/CapAnalogique (Module \"deployment.testCapAnalogique.war\" from Service Module Loader): fr/esisar/locVoiture/entities/Capteur"}}}} 测试运行:1,失败:0,错误:1,跳过:0,运行时间:3.361秒{“操作步骤-1”=>{“WFLYCTL0080:失败的服务”=>{“jboss.deployment.unit.\“testCapAnalogique.war\”。POST\U模块“=>”WFLYSRV0153:无法处理部署的阶段POST\U模块“testCapAnalogique.war\” 原因:java.lang.RuntimeException:WFLYSRV0177:从服务模块加载器获取类fr.esisar.locVoiture.NSTALESTALESS的反射信息时出错,其中类加载器ModuleClassLoader用于模块\“deployment.TestCapAnaloguique.war\” 原因:java.lang.NoClassDefFoundError:未能链接fr/esisar/locVoiture/entities/CapAnalogique(服务模块加载器中的模块\“deployment.testCapAnalogique.war\”):fr/esisar/locVoiture/entities/Capteur“}} 我正在使用以下arquillian.xml:Eclipse 原因:java.lang.NoClassDefFoundError:通过Arquilliqn为Maven项目运行JUnit测试时链接失败,eclipse,maven,m2eclipse,jboss-arquillian,Eclipse,Maven,M2eclipse,Jboss Arquillian,因此,我尝试在学校项目中使用Eclipse上的Arquilian对maven项目进行测试,但是,当我尝试通过mvn clean test运行测试时,我得到以下堆栈跟踪: Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 3.361 sec {"Operation step-1" => {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"testCa
<?xml version="1.0" encoding="UTF-8"?>
<arquillian xmlns="http://jboss.org/schema/arquillian"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
<defaultProtocol type="Servlet 3.0" />
<container qualifier="jboss" default="true">
<configuration>
<property name="jbossHome">home/user/CS513-Archive/wildfly-
16.0.0.Final</property>
</configuration>
</container>
</arquillian>
主页/用户/CS513存档/wildfly-
16.0.0.1决赛
以及以下test-persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="test">
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
java:jboss/datasources/examples
test-ds.xml如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd">
<!-- The datasource is bound into JNDI at this location. We reference
this in META-INF/test-persistence.xml -->
<datasource jndi-name="java:jboss/datasources/BeanValidationQuickstartTestDS"
pool-name="bean-validation-quickstart-test" enabled="true"
use-java-context="true">
<connection-url>jdbc:h2:mem:bean-validation-quickstart-test;DB_CLOSE_DELAY=-1</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
jdbc:h2:mem:bean验证快速启动测试;DB_关闭_延迟=-1
氢
sa
sa
对于pom.xml中的依赖项:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.protocol</groupId>
<artifactId>arquillian-protocol-servlet</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>1.1.13.Final</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<profiles>
<profile>
<id>arq-managed</id>
<dependencies>
<dependency>
<groupId>org.wildfly.arquillian</groupId>
<artifactId>wildfly-arquillian-container-managed</artifactId>
<version>2.1.0.Final</version>
<scope>test</scope>
</dependency>
</dependencies>
</profile>
<profile>
<id>arq-remote</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>org.wildfly.arquillian</groupId>
<artifactId>wildfly-arquillian-container-remote</artifactId>
<version>2.1.0.Final</version>
<scope>test</scope>
</dependency>
</dependencies>
</profile>
</profiles>
朱尼特
朱尼特
4.12
测试
org.jboss.arquillian.junit
arquillian junit容器
测试
org.jboss.arquillian.protocol
arquillian协议servlet
测试
org.jboss.arquillian
阿奎利安bom
1.1.13.最终版本
进口
聚甲醛
arq管理
org.wildfly.arquillian
wildfly arquillian容器管理
2.1.0.1最终版本
测试
遥控器
真的
org.wildfly.arquillian
wildfly arquillian集装箱遥控器
2.1.0.1最终版本
测试
请注意,我是Maven和arquillian的新手,可能遗漏了一些琐碎的东西。所以问题是,我在createArchiveTest()函数中添加了类,作为收缩包创建方法中的资源,扩展并实现了其他类和接口。事实证明,它们实际上都需要作为资源传递。
假设您想要测试一个名为StudentA的类,但是这个类扩展了另一个名为Student的类,并且Student类实现了一个Person接口,这三个类都需要作为资源传递 您是否认识它所抱怨的类(
fr.esisar.locVoiture.stateless.capAnaloguiquesTeless
)?i、 那是你写的东西,还是一本书dependency@Gus它是我编写并添加到测试档案中的一个类,如下所示:`@Deployment public static archive createArchiveTest(){return ShrinkWrap.create(WebArchive.class,“testCapAnalogique.war”).addClasses(CapAnalogique.class、capAnalogIQUETIFLOCAL.class、capAnalogIQUETIFRemote.class、CapAnalogiqueStateless.class).addAsResource(“META-INF/test persistence.xml”、“META-INF/persistence.xml”).addasWebInfoResource(EmptyAsset.INSTANCE、archivepath.create(“beans.xml”).addasWebInfoResource(“test ds.xml”);)“嗯,我不熟悉arquillian,所以这是一般的故障排除建议……我会验证它构建的.war文件确实有这个类。在构建文件夹中可能有一个.war工件,你可以打开看看:testCapAnalogique.war只是一个特殊的jar文件,可以用winzip打开我们会有一个WEB-INF/classes目录,里面有这个类。实际上,它甚至没有创建.war,反正我也找不到它。