1 Reply Latest reply on Nov 30, 2016 11:31 AM by Ben Cheng

    Arquillian Test with Embedded Tomcat - Class Not Found: org.jboss.shrinkwrap.api.asset.ClassAsset

    Ben Cheng Newbie

          @Deployment(testable = false)

          public static WebArchive createDeployment() {

          WebArchive war = ShrinkWrap.create(WebArchive.class, "test.war");

         

          File[] files = Maven.configureResolver().loadPomFromFile("pom.xml")

          .importRuntimeAndTestDependencies().resolve().withTransitivity().asFile();

         

              for(File file : files){

              war.addAsLibrary(file);

              }      

             

          war.addClass(TestBean.class);

          war.setWebXML(new File("src/test/resources/web.xml"));

       

              return war;

          }

       

      It throw exception of org.jboss.shrinkwrap.api.asset.ClassAsset

       

      java.lang.RuntimeException: Could not invoke deployment method: public static org.jboss.shrinkwrap.api.spec.WebArchive com.ittechoffice.example.SimpleTest.createDeployment()

        at org.jboss.arquillian.container.test.impl.client.deployment.AnnotationDeploymentScenarioGenerator.invoke(AnnotationDeploymentScenarioGenerator.java:160)

        at org.jboss.arquillian.container.test.impl.client.deployment.AnnotationDeploymentScenarioGenerator.generateDeployment(AnnotationDeploymentScenarioGenerator.java:94)

        at org.jboss.arquillian.container.test.impl.client.deployment.AnnotationDeploymentScenarioGenerator.generate(AnnotationDeploymentScenarioGenerator.java:57)

        at org.jboss.arquillian.container.test.impl.client.deployment.DeploymentGenerator.generateDeployment(DeploymentGenerator.java:79)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:497)

        at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)

        at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)

        at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)

        at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135)

        at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115)

        at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)

        at org.jboss.arquillian.container.test.impl.client.ContainerEventController.execute(ContainerEventController.java:100)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:497)

        at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)

        at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)

        at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)

        at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:75)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:497)

        at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)

        at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)

        at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:60)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:497)

        at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)

        at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)

        at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135)

        at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115)

        at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.beforeClass(EventTestRunnerAdaptor.java:80)

        at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:182)

        at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:314)

        at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:46)

        at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:199)

        at org.junit.runners.ParentRunner.run(ParentRunner.java:236)

        at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:147)

        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)

        at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)

        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)

        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)

        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

      Caused by: java.lang.reflect.InvocationTargetException

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:497)

        at org.jboss.arquillian.container.test.impl.client.deployment.AnnotationDeploymentScenarioGenerator.invoke(AnnotationDeploymentScenarioGenerator.java:156)

        ... 50 more

      Caused by: java.lang.NoClassDefFoundError: org/jboss/shrinkwrap/api/asset/ClassAsset

        at org.jboss.shrinkwrap.impl.base.container.ContainerBase.addClasses(ContainerBase.java:1233)

        at org.jboss.shrinkwrap.impl.base.container.ContainerBase.addClass(ContainerBase.java:1170)

        at com.ittechoffice.example.SimpleTest.createDeployment(SimpleTest.java:28)

        ... 55 more

      Caused by: java.lang.ClassNotFoundException: org.jboss.shrinkwrap.api.asset.ClassAsset

        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

        ... 58 more

       

       

       

      My Maven Dependency is as below.

          <dependencies>

         

              <!-- Arquillian -->

        <dependency>

        <groupId>org.jboss.arquillian</groupId>

        <artifactId>arquillian-bom</artifactId>

        <version>1.1.11.Final</version>

        <type>pom</type>

                  <scope>test</scope>

        </dependency>

             

              <!-- JUnit -->

        <dependency>

                  <groupId>junit</groupId>

                  <artifactId>junit</artifactId>

                  <version>4.8.1</version>

                  <scope>test</scope>

              </dependency>

              <dependency>

                  <groupId>org.jboss.arquillian.junit</groupId>

                  <artifactId>arquillian-junit-container</artifactId>

                  <version>1.0.3.Final</version>

                  <scope>test</scope>

              </dependency>

       

        <!-- Embedded Tomcat -->

        <dependency>

        <groupId>org.jboss.arquillian.container</groupId>

        <artifactId>arquillian-tomcat-embedded-7</artifactId>

        <version>1.0.0.CR8</version>

        <scope>test</scope>

        </dependency>

              <dependency>

                  <groupId>javax.servlet.jsp</groupId>

                  <artifactId>jsp-api</artifactId>

                  <version>2.2</version>

                  <scope>test</scope>

              </dependency>

              <dependency>

                  <groupId>com.sun.faces</groupId>

                  <artifactId>jsf-api</artifactId>

                  <version>2.1.13</version>

              </dependency>

              <dependency>

                  <groupId>com.sun.faces</groupId>

                  <artifactId>jsf-impl</artifactId>

                  <version>2.1.13</version>

              </dependency>

              <dependency>

                  <groupId>org.apache.tomcat.embed</groupId>

                  <artifactId>tomcat-embed-core</artifactId>

                  <version>7.0.53</version>

                  <scope>provided</scope>

              </dependency>

              <dependency>

                  <groupId>org.apache.tomcat.embed</groupId>

                  <artifactId>tomcat-embed-jasper</artifactId>

                  <version>7.0.53</version>

                  <scope>provided</scope>

              </dependency>

              <dependency>

                  <groupId>org.apache.tomcat.embed</groupId>

                  <artifactId>tomcat-embed-logging-juli</artifactId>

                  <version>7.0.53</version>

                  <scope>provided</scope>

              </dependency>

              <dependency>

                  <groupId>org.eclipse.jdt.core.compiler</groupId>

                  <artifactId>ecj</artifactId>

                  <version>3.7</version>

                  <scope>test</scope>

              </dependency>

             

              <!-- JsfUnit -->

           <dependency>

             <groupId>org.jboss.jsfunit</groupId>

             <artifactId>jsfunit-arquillian</artifactId>

             <version>2.0.0.Beta2</version>

           </dependency>

          

           <!-- RichFaces and Ajax4jsf Client jar -->

           <dependency>

             <groupId>org.jboss.jsfunit</groupId>

             <artifactId>jboss-jsfunit-richfaces</artifactId>

             <version>2.0.0.Beta2</version>

           </dependency>

          

           <!-- Ant task used to "jsfunify" a WAR file -->

           <dependency>

             <groupId>org.jboss.jsfunit</groupId>

             <artifactId>jboss-jsfunit-ant</artifactId>

             <version>2.0.0.Beta2</version>

           </dependency>

       

       

          <!-- JSFUnit Static Analysis Tools -->

           <dependency>

             <groupId>org.jboss.jsfunit</groupId>

             <artifactId>jboss-jsfunit-analysis</artifactId>

             <version>2.0.0.Beta2</version>

           </dependency>

          </dependencies>

       

      Anything wrong with my maven dependencies?

        • 1. Re: Arquillian Test with Embedded Tomcat - Class Not Found: org.jboss.shrinkwrap.api.asset.ClassAsset
          Ben Cheng Newbie

          This issue is fixed by changing the maven dependencies as below.

           

           

            <dependencyManagement>

            <dependencies>

            <!-- Arquillian -->

            <dependency>

            <groupId>org.jboss.arquillian</groupId>

            <artifactId>arquillian-bom</artifactId>

            <version>1.1.11.Final</version>

            <type>pom</type>

            <scope>import</scope>

            </dependency>

            </dependencies>

            </dependencyManagement>

           

           

            <dependencies>

           

            <!-- shrinkwrap -->

            <dependency>

            <groupId>org.jboss.shrinkwrap</groupId>

            <artifactId>shrinkwrap-depchain</artifactId>

            <type>pom</type>

            <scope>test</scope>

            </dependency>

           

            </dependencies>