2011-09-27 18 views
0

我想使用m2eclipse API來導入原型的項目。 我的代碼是在這裏:獲取原型目錄失敗(無法加載Ahcwagon)-m2e-0.12.1

RemoteCatalogFactory remoteCatalogFactory = new RemoteCatalogFactory("http:/server1/archetype-catalog.xml", null, true); 
    ArchetypeCatalog catalog = remoteCatalogFactory.getArchetypeCatalog(); 
    List<Archetype> archetypes = catalog.getArchetypes(); 
    for (Archetype archetype : archetypes){ 
     System.out.println(archetype.getArtifactId()); 
    } 

m2eclipse的版本是:0.12.1。 了以下異常:

1) Error injecting: org.sonatype.maven.wagon.AhcWagon 
    at ClassRealm[plexus.core, parent: null] 
    while locating org.apache.maven.wagon.Wagon annotated with @com.google.inject.name.Named(value=http) 

1 error 
    at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:958) 
    at com.google.inject.Scopes$1$1.get(Scopes.java:59) 
    at org.sonatype.guice.bean.locators.LazyQualifiedBean.getValue(LazyQualifiedBean.java:66) 
    at org.sonatype.guice.plexus.locators.LazyPlexusBean.getValue(LazyPlexusBean.java:54) 
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:247) 
    ... 38 more 
Caused by: java.lang.TypeNotPresentException: Type org.sonatype.maven.wagon.AhcWagon not present 
    at org.sonatype.guice.bean.reflect.URLClassSpace.loadClass(URLClassSpace.java:94) 
    at org.sonatype.guice.bean.reflect.NamedClass.load(NamedClass.java:46) 
    at org.sonatype.guice.bean.reflect.AbstractDeferredClass.get(AbstractDeferredClass.java:48) 
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40) 
    at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:949) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:995) 
    at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:945) 
    ... 42 more 
Caused by: java.lang.ClassNotFoundException: org.sonatype.maven.wagon.AhcWagon 
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244) 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230) 
    at org.sonatype.guice.bean.reflect.URLClassSpace.loadClass(URLClassSpace.java:90) 

調試過程中,我發現bundleloader使用org.maven.ide.eclipse的捆綁類加載器加載AhcWagon類。 因爲maven embedder bundle沒有導出AhcWagon的包,所以無法加載它。

但我的問題是:調用者(plexus-classworlds.jar)在maven embedder bundle和AhcWagon(在wagon-ahc.jar中)是在同一個包中。爲什麼不使用maven embedder的bundle loader來加載AhcWagon?

我使用這個API有問題嗎?

太棒了!如果有任何示例代碼。

問候 西蒙

回答

0

m2eclipse0.12.1的bug,需要org.sonatype.maven.wagon清單中導出。

相關問題