4 Replies Latest reply: May 14, 2012 8:25 AM by rune_rne RSS

Adding dependencies to .jar in arquillian

rune_rne Newbie

hi,

i try to write some integration test in these test i try to use some .jar files as libraries for the functions i want to test.

I do this in eclipse without mave using ivy.

 

my bean looks like this:

@Stateless
public class TestBean{
     static{
            PceLogger newLogger = new PceLogger();
     }

      public static void testDia(){
           newLogger.something();
      }
 }

my test looks like this:

 

@Deployment
 public static WebArchive createTestArchive() {

  MavenDependencyResolver resolver = DependencyResolvers
                .use(MavenDependencyResolver.class);

 WebArchive war = ShrinkWrap.create(WebArchive.class, "TestBean.war").addClass(TestBean.class)
 .addAsLibraries(DependencyResolvers.use(MavenDependencyResolver.class)
 .artifacts("/WEB-INF/lib/A.jar","/WEB-INF/lib/B.jar","/WEB-INF/lib/C.jar").resolveAs(WebArchive.class))

 .addAsManifestResource(EmptyAsset.INSTANCE,ArchivePaths.create("beans.xml"))
 .addAsManifestResource("newTest/web.war/META-INF/MANIFEST.MF");
 return war;

 }

 @EJB
 private TestBean testBean;

 @Test
 public void test() throws Exception {
     Assert.assertNotNull(testBean);
 }

 

Further i put the jar into the build path and aswell i tried to put the path into the MANIFEST

i already tried to run the deployment with:

.addAsLibraries(DependencyResolvers.use(MavenDependencyResolver.class)

.artifacts("/WEB-INF/lib/A.jar","/WEB-INF/lib/B.jar","/WEB-INF/lib/C.jar").resolveAs(WebArchive.class))

 

which results in:

java.lang.RuntimeException: Could not invoke deployment method: public static org.jboss.shrinkwrap.api.spec.WebArchive JunitTestCase.createTestArchive()

 

Caused by: java.lang.reflect.InvocationTargetException

 

Caused by: org.jboss.shrinkwrap.resolver.api.ResolutionException: Bad artifact coordinates, expected format is <groupId>:<artifactId>[:<extension>[:<classifier>]][:<version>]

 

and with

.addAsLibraries("/WEB-INF/lib/A.jar","/WEB-INF/lib/B.jar","/WEB-INF/lib/C.jar").resolveAs(WebArchive.class))

 

which results in the same

 

 

when i run it wihtout the addAsLibraries i get:

Failed to start service jboss.deployment.unit."TestBean.war".

Caused by: java.lang.NoClassDefFoundError:

 

but it is not working

any suggestions?

  • 1. Re: Adding dependencies to .jar in arquillian
    Andrew Rubinger Master

    Looks like you're trying to use the ShrinkWrap Maven Resolver to simply add existing files to your WebArchive?  The Resolver actually "resolves" Maven coordinates like "junit:junit:4.10" into archives; if you already have the files, use ZipImporter instead.

     

    S,

    ALR

  • 2. Re: Adding dependencies to .jar in arquillian
    rune_rne Newbie

    yes you are right i already have the files. do i need to  merge all the files? i tried but it seems that only on import ist working?

    further i have to  add TestBean via addClass right? but this is not working for the ZipImporter.class

  • 3. Re: Adding dependencies to .jar in arquillian
    rune_rne Newbie

    i tried it like this but i do not think it is a good solution and i m not sure if it is working still getting an exception

     

    WebArchive imported = ShrinkWrap.create(ZipImporter.class,"Test").importFrom(new File("bin/org/blog/bean/Jar1.jar")).as(WebArchive.class);

    WebArchive imported1 = ShrinkWrap.create(ZipImporter.class,"Tes1t").importFrom(new File("bin/org/blog/bean/Jar2".jar")).as(WebArchive.class);

    WebArchive imported2 = ShrinkWrap.create(ZipImporter.class,"Test2").importFrom(new File("bin/org/blog/bean/Jar3".jar")).as(WebArchive.class);

    imported.merge(imported1);

    imported.merge(imported2);

     

    WebArchive war = ShrinkWrap.create(WebArchive.class, "TestBean.war").addClass(TestBean.class)

    .addAsManifestResource(EmptyAsset.INSTANCE,ArchivePaths.create("beans.xml"));

    war.merge(imported);

  • 4. Re: Adding dependencies to .jar in arquillian
    rune_rne Newbie

    i get the following error now:

     

    14:16:51,802 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed to start service jboss.deployment.unit."TestBean.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."TestBean.war".POST_MODULE: Failed to process phase POST_MODULE of deployment "TestBean.war"

    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]

    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]

    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_19]

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_19]

    at java.lang.Thread.run(Thread.java:619) [rt.jar:1.6.0_19]

     

    Caused by: java.lang.RuntimeException: Error getting reflective information for class org.blog.bean.TestBean with ClassLoader ModuleClassLoader for Module "deployment.TestBean.war:main" from Service Module Loader

    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]

    at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:58)

    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:85)

    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:70)

    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:55)

    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]

    ... 5 more

    Caused by: java.lang.NoClassDefFoundError: IPceAppender

    at java.lang.Class.getDeclaredFields0(Native Method) [rt.jar:1.6.0_19]

    at java.lang.Class.privateGetDeclaredFields(Class.java:2291) [rt.jar:1.6.0_19]

    at java.lang.Class.getDeclaredFields(Class.java:1743) [rt.jar:1.6.0_19]

    at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:57) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]

    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:66) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]

     

     

    Caused by: java.lang.ClassNotFoundException: PceAppender from [Module "deployment.TestBean.war:main" from Service Module Loader]

    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)

    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)

     

    it seams that jboss cant find the dependencies during the deployment. i put the dependencies into the build path of eclipse and into the manifest  the jar files exist in a folder in web-inf/lib

    but it still cant find it