Good day to you, Arnaud,

Just a hunch....

The Symptom:
Somewhere along the stacktrace, a component failed to get composed because
of a NoClassDefFoundError exception.

Solution:
I think the expected transitive dependency was broken. You may want to
declare the binary containing the "NoClassDefFoundError class" as a direct
dependency of your project. ..also, you may want to take a look at your
dependency tree ( i.e by using "mvn project-info-reports:dependencies -X" )
to have a better idea of what's happening.

Explanation of what may be happening:
I experienced something like this before. And this is how it went with
mine...

I had a project grp.id:proj-a:1. And it's dependency tree looked something
like this

grp.id:proj-a:1
 |-- grp.id:proj-b:1
 |   `-- grp.id:proj-c:1
 |        `-- grp.id:proj-d:2 <~ did not get included 
 `-- grp.id:proj-e:1
      `-- grp.id:proj-d:1 <~ was chosen over version 2

the difference between grp.id:proj-d:1 and grp.id:proj-d:2 is that
grp.id:proj-d:2 has a class MyClass.

Thus, when my project grp.id:proj-a:1 referenced the class MyClass, it was
unable to load it because the version of grp.id:proj-d that got resolved was
version 1 instead of version 2 ( see [1] for more details ).

So to prevent this, I had to declared grp.id:proj-d:2 as a direct dependency
so that i my dependency tree would look something like

grp.id:proj-a:1
 |-- grp.id:proj-b:1
 |   `-- grp.id:proj-c:1
 |        `-- grp.id:proj-d:2
 |-- grp.id:proj-e:1
 |    `-- grp.id:proj-d:1 <~ did not get included
 `-- grp.id:proj-d:2 <~ included

I am not sure though why your dependency tree is different between your
maven commandline and your embedded maven.

Cheers,
Franz

[1] http://docs.codehaus.org/display/MAVENUSER/Dependency+Mechanism


Arnaud Bailly-3 wrote:
> 
> Hello, 
> I am trying to add some integration tests for a plugin I wrote, using
> MavenEmbedder. When running the test, I got the following impressive
> exception trace:
> 
> -------------------------------------------------------------------------------
> Test set: oqube.patchwork.it.PatchworkMavenTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.662 sec
> <<< FAILURE!
> test01(oqube.patchwork.it.PatchworkMavenTest)  Time elapsed: 0.623 sec 
> <<< ERROR!
> org.apache.maven.embedder.MavenEmbedderException: Cannot lookup required
> component.
>       at org.apache.maven.embedder.MavenEmbedder.start(MavenEmbedder.java:644)
>       at
> oqube.patchwork.it.PatchworkMavenTest.setUp(PatchworkMavenTest.java:48)
>       at junit.framework.TestCase.runBare(TestCase.java:125)
>       at junit.framework.TestResult$1.protect(TestResult.java:106)
>       at junit.framework.TestResult.runProtected(TestResult.java:124)
>       at junit.framework.TestResult.run(TestResult.java:109)
>       at junit.framework.TestCase.run(TestCase.java:118)
>       at junit.framework.TestSuite.runTest(TestSuite.java:208)
>       at junit.framework.TestSuite.run(TestSuite.java:203)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:585)
>       at
> org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:210)
>       at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:135)
>       at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:122)
>       at org.apache.maven.surefire.Surefire.run(Surefire.java:129)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:585)
>       at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:225)
>       at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:747)
> Caused by:
> org.codehaus.plexus.component.repository.exception.ComponentLookupException:
> Unable to lookup component 'org.apache.maven.project.MavenProjectBuilder',
> it could not be started
>       at
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:339)
>       at org.codehaus.plexus.embed.Embedder.lookup(Embedder.java:78)
>       at org.apache.maven.embedder.MavenEmbedder.start(MavenEmbedder.java:610)
>       ... 22 more
> Caused by:
> org.codehaus.plexus.component.repository.exception.ComponentLifecycleException:
> Error starting component
>       at
> org.codehaus.plexus.component.manager.AbstractComponentManager.startComponentLifecycle(AbstractComponentManager.java:109)
>       at
> org.codehaus.plexus.component.manager.AbstractComponentManager.createComponentInstance(AbstractComponentManager.java:95)
>       at
> org.codehaus.plexus.component.manager.ClassicSingletonComponentManager.getComponent(ClassicSingletonComponentManager.java:92)
>       at
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:331)
>       ... 24 more
> Caused by:
> org.codehaus.plexus.personality.plexus.lifecycle.phase.PhaseExecutionException:
> Error composing component
>       at
> org.codehaus.plexus.personality.plexus.lifecycle.phase.CompositionPhase.execute(CompositionPhase.java:33)
>       at
> org.codehaus.plexus.lifecycle.AbstractLifecycleHandler.start(AbstractLifecycleHandler.java:101)
>       at
> org.codehaus.plexus.component.manager.AbstractComponentManager.startComponentLifecycle(AbstractComponentManager.java:105)
>       ... 27 more
> Caused by: org.codehaus.plexus.component.composition.CompositionException:
> Composition failed of field artifactResolver in object of type
> org.apache.maven.project.DefaultMavenProjectBuilder because the
> requirement
> ComponentRequirement{role='org.apache.maven.artifact.resolver.ArtifactResolver',
> roleHint='null', fieldName='null'} was missing
>       at
> org.codehaus.plexus.component.composition.FieldComponentComposer.assignRequirementToField(FieldComponentComposer.java:154)
>       at
> org.codehaus.plexus.component.composition.FieldComponentComposer.assembleComponent(FieldComponentComposer.java:73)
>       at
> org.codehaus.plexus.component.composition.DefaultComponentComposerManager.assembleComponent(DefaultComponentComposerManager.java:68)
>       at
> org.codehaus.plexus.DefaultPlexusContainer.composeComponent(DefaultPlexusContainer.java:1486)
>       at
> org.codehaus.plexus.personality.plexus.lifecycle.phase.CompositionPhase.execute(CompositionPhase.java:29)
>       ... 29 more
> Caused by:
> org.codehaus.plexus.component.repository.exception.ComponentLookupException:
> Unable to lookup component
> 'org.apache.maven.artifact.resolver.ArtifactResolver', it could not be
> created
>       at
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:335)
>       at
> org.codehaus.plexus.component.composition.FieldComponentComposer.assignRequirementToField(FieldComponentComposer.java:129)
>       ... 33 more
> Caused by:
> org.codehaus.plexus.component.factory.ComponentInstantiationException:
> Could not instanciate component: role:
> 'org.apache.maven.artifact.resolver.ArtifactResolver', implementation:
> 'org.apache.maven.artifact.resolver.DefaultArtifactResolver'
>       at
> org.codehaus.plexus.component.factory.java.JavaComponentFactory.makeException(JavaComponentFactory.java:77)
>       at
> org.codehaus.plexus.component.factory.java.JavaComponentFactory.newInstance(JavaComponentFactory.java:62)
>       at
> org.codehaus.plexus.DefaultPlexusContainer.createComponentInstance(DefaultPlexusContainer.java:1464)
>       at
> org.codehaus.plexus.component.manager.AbstractComponentManager.createComponentInstance(AbstractComponentManager.java:93)
>       at
> org.codehaus.plexus.component.manager.ClassicSingletonComponentManager.getComponent(ClassicSingletonComponentManager.java:92)
>       at
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:331)
>       ... 34 more
> Caused by: java.lang.NoClassDefFoundError:
> org/apache/maven/artifact/resolver/MultipleArtifactsNotFoundException
>       at java.lang.Class.getDeclaredConstructors0(Native Method)
>       at java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
>       at java.lang.Class.getConstructor0(Class.java:2640)
>       at java.lang.Class.newInstance0(Class.java:321)
>       at java.lang.Class.newInstance(Class.java:303)
>       at
> org.codehaus.plexus.component.factory.java.JavaComponentFactory.newInstance(JavaComponentFactory.java:44)
>       ... 38 more
> 
> 
> When running the same test in Eclipse, I got:
> 
> 
> org.apache.maven.embedder.MavenEmbedderException: Cannot lookup required
> component.
>       at org.apache.maven.embedder.MavenEmbedder.start(MavenEmbedder.java:644)
>       at
> oqube.patchwork.it.PatchworkMavenTest.setUp(PatchworkMavenTest.java:49)
>       at junit.framework.TestCase.runBare(TestCase.java:125)
>       at junit.framework.TestResult$1.protect(TestResult.java:106)
>       at junit.framework.TestResult.runProtected(TestResult.java:124)
>       at junit.framework.TestResult.run(TestResult.java:109)
>       at junit.framework.TestCase.run(TestCase.java:118)
>       at junit.framework.TestSuite.runTest(TestSuite.java:208)
>       at junit.framework.TestSuite.run(TestSuite.java:203)
>       at
> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
>       at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>       at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
>       at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
>       at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
>       at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by:
> org.codehaus.plexus.component.repository.exception.ComponentLookupException:
> Unable to lookup component 'org.apache.maven.project.MavenProjectBuilder',
> it could not be started
>       at
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:339)
>       at org.codehaus.plexus.embed.Embedder.lookup(Embedder.java:78)
>       at org.apache.maven.embedder.MavenEmbedder.start(MavenEmbedder.java:610)
>       ... 14 more
> Caused by:
> org.codehaus.plexus.component.repository.exception.ComponentLifecycleException:
> Error starting component
>       at
> org.codehaus.plexus.component.manager.AbstractComponentManager.startComponentLifecycle(AbstractComponentManager.java:109)
>       at
> org.codehaus.plexus.component.manager.AbstractComponentManager.createComponentInstance(AbstractComponentManager.java:95)
>       at
> org.codehaus.plexus.component.manager.ClassicSingletonComponentManager.getComponent(ClassicSingletonComponentManager.java:92)
>       at
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:331)
>       ... 16 more
> Caused by:
> org.codehaus.plexus.personality.plexus.lifecycle.phase.PhaseExecutionException:
> Error composing component
>       at
> org.codehaus.plexus.personality.plexus.lifecycle.phase.CompositionPhase.execute(CompositionPhase.java:33)
>       at
> org.codehaus.plexus.lifecycle.AbstractLifecycleHandler.start(AbstractLifecycleHandler.java:101)
>       at
> org.codehaus.plexus.component.manager.AbstractComponentManager.startComponentLifecycle(AbstractComponentManager.java:105)
>       ... 19 more
> Caused by: org.codehaus.plexus.component.composition.CompositionException:
> Composition failed of field profilesBuilder in object of type
> org.apache.maven.project.DefaultMavenProjectBuilder because the
> requirement
> ComponentRequirement{role='org.apache.maven.profiles.MavenProfilesBuilder',
> roleHint='null', fieldName='null'} was missing
>       at
> org.codehaus.plexus.component.composition.FieldComponentComposer.assignRequirementToField(FieldComponentComposer.java:154)
>       at
> org.codehaus.plexus.component.composition.FieldComponentComposer.assembleComponent(FieldComponentComposer.java:73)
>       at
> org.codehaus.plexus.component.composition.DefaultComponentComposerManager.assembleComponent(DefaultComponentComposerManager.java:68)
>       at
> org.codehaus.plexus.DefaultPlexusContainer.composeComponent(DefaultPlexusContainer.java:1486)
>       at
> org.codehaus.plexus.personality.plexus.lifecycle.phase.CompositionPhase.execute(CompositionPhase.java:29)
>       ... 21 more
> Caused by:
> org.codehaus.plexus.component.repository.exception.ComponentLookupException:
> Unable to lookup component
> 'org.apache.maven.profiles.MavenProfilesBuilder', it could not be created
>       at
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:335)
>       at
> org.codehaus.plexus.component.composition.FieldComponentComposer.assignRequirementToField(FieldComponentComposer.java:129)
>       ... 25 more
> Caused by:
> org.codehaus.plexus.component.factory.ComponentInstantiationException:
> Could not instanciate component: role:
> 'org.apache.maven.profiles.MavenProfilesBuilder', implementation:
> 'org.apache.maven.profiles.DefaultMavenProfilesBuilder'
>       at
> org.codehaus.plexus.component.factory.java.JavaComponentFactory.makeException(JavaComponentFactory.java:77)
>       at
> org.codehaus.plexus.component.factory.java.JavaComponentFactory.newInstance(JavaComponentFactory.java:62)
>       at
> org.codehaus.plexus.DefaultPlexusContainer.createComponentInstance(DefaultPlexusContainer.java:1464)
>       at
> org.codehaus.plexus.component.manager.AbstractComponentManager.createComponentInstance(AbstractComponentManager.java:93)
>       at
> org.codehaus.plexus.component.manager.ClassicSingletonComponentManager.getComponent(ClassicSingletonComponentManager.java:92)
>       at
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:331)
>       ... 26 more
> Caused by: java.lang.NoClassDefFoundError:
> org/codehaus/plexus/util/interpolation/ValueSource
>       at java.lang.Class.getDeclaredConstructors0(Native Method)
>       at java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
>       at java.lang.Class.getConstructor0(Class.java:2640)
>       at java.lang.Class.newInstance0(Class.java:321)
>       at java.lang.Class.newInstance(Class.java:303)
>       at
> org.codehaus.plexus.component.factory.java.JavaComponentFactory.newInstance(JavaComponentFactory.java:44)
>       ... 30 more
> 
> Here is my pom:
> 
> <project xmlns="http://maven.apache.org/POM/4.0.0"; 
>  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/maven-v4_0_0.xsd";>
>  <modelVersion>4.0.0</modelVersion>
> 
>  <parent>
>   <groupId>oqube</groupId>
>   <artifactId>patchwork</artifactId>
>   <version>2.0-SNAPSHOT</version>
>  </parent>
> 
>  <groupId>oqube</groupId>
>  <artifactId>patchwork-it</artifactId>
>  <packaging>jar</packaging>
>  <version>2.0-SNAPSHOT</version>
>  <name>Integration tests</name>
> 
>  <description>
> Integration tests for Patchwork.
>  </description>
> 
> 
>  <dependencies>
>   
>   <dependency>
>    <groupId>org.apache.maven</groupId>
>    <artifactId>maven-embedder</artifactId>
>    <version>2.0.4</version>
>   </dependency>
> 
>   <dependency>
>    <groupId>oqube.patchwork</groupId>
>    <artifactId>patchwork-maven-plugin</artifactId>
>    <version>2.0-SNAPSHOT</version>
>   </dependency>
>   
>   <dependency>  
>    <groupId>oqube</groupId>
>    <artifactId>patchwork-control</artifactId>
>    <version>2.0-SNAPSHOT</version>
>   </dependency>  
>  </dependencies>
>   
>  <build>
>   <plugins>
>    <plugin>
>     <groupId>org.apache.maven.plugins</groupId>
>     <artifactId>maven-surefire-plugin</artifactId>
>     <configuration>
>      <excludes>
>       <exclude>
>       test*/**</exclude></excludes></configuration>
>    </plugin></plugins></build>
> </project>
> 
> I am a bit stuck. Help greatly appreciated.
> 
> Regards,
> -- 
> OQube < software engineering \ génie logiciel >
> Arnaud Bailly, Dr.
> \web> http://www.oqube.com
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Integration-testing-plugin-and-version-problems-tf3192272s177.html#a8866753
Sent from the Maven - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to