【问题标题】:get archetype catalog failed(can't load Ahcwagon)-m2e-0.12.1获取原型目录失败(无法加载 Ahcwagon)-m2e-0.12.1
【发布时间】:2011-09-27 09:06:47
【问题描述】:

我正在尝试使用 m2eclipse api 按原型导入项目。 我的代码在这里:

    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 的 bundle 类加载器来加载 AhcWagon 类。 因为maven embedder bundle没有导出AhcWagon的包,所以无法加载。

但我的问题是:调用者(plexus-classworlds.jar)在 maven 嵌入包中,而 AhcWagon(在 wagon-ahc.jar 中)在同一个包中。为什么不使用 maven embedder 的 bundle loader 来加载 AhcWagon?

我使用这个 API 有什么问题吗?

太好了!如果有示例代码。

问候 西蒙

【问题讨论】:

    标签: m2eclipse archetypes


    【解决方案1】:

    m2eclipse0.12.1的bug,需要在manifest中导出org.sonatype.maven.wagon。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多