Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 原因:java.lang.NoClassDefFoundError:通过Arquilliqn为Maven项目运行JUnit测试时链接失败_Eclipse_Maven_M2eclipse_Jboss Arquillian - Fatal编程技术网

Eclipse 原因:java.lang.NoClassDefFoundError:通过Arquilliqn为Maven项目运行JUnit测试时链接失败

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

因此,我尝试在学校项目中使用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:

<?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,反正我也找不到它。