【问题标题】:Maven site-deploy build errorMaven站点部署构建错误
【发布时间】:2012-07-28 23:49:38
【问题描述】:

当我最近在构建中运行“mvn install site-deploy”时,我不断收到以下错误。我无法弄清楚出了什么问题,因为我已经 替换了 m2 repo 还尝试了几个干净的构建。有人可以给我一个提示,我可以在哪里找到解决方案。我试过谷歌搜索,但不能 遇到相关的东西。谢谢。

 FATAL ERROR] org.apache.maven.plugins.site.SiteMojo#execute() caused a linkage error (java.lang.NoClassDefFoundError) and may be out-of-date. Check the realms:
[FATAL ERROR] Plugin realm = app0.child-container[org.apache.maven.plugins:maven-site-plugin:2.0-beta-7]
......
[FATAL ERROR] Container realm = plexus.core
.......
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] org/apache/maven/plugin/logging/Log
org.apache.maven.plugin.logging.Log
[INFO] ------------------------------------------------------------------------
[INFO] Trace
java.lang.NoClassDefFoundError: org/apache/maven/plugin/logging/Log
    at org.codehaus.mojo.emma.EmmaReportMojo.canGenerateReport(EmmaReportMojo.java:319)
    at org.apache.maven.plugins.site.AbstractSiteRenderingMojo.filterReports(AbstractSiteRenderingMojo.java:177)
    at org.apache.maven.plugins.site.SiteMojo.execute(SiteMojo.java:81)
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:519)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:356)
    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:597)
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: java.lang.ClassNotFoundException: org.apache.maven.plugin.logging.Log
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195)
    at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255)
    at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 21 more

版本信息: jdk1.6.0_14,apache-maven-2.1.0

【问题讨论】:

标签: maven-2


【解决方案1】:

我们刚刚遇到了这个问题,尽管是使用 org.apache.felix:maven-bundle-plugin。

我们的问题源于我们没有在 pom.xml 中指定插件版本:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
</plugin>

这一切都很好,一切都与(当时)最新版本的插件(即 2.3.4)一起工作。

但是,当新版本的插件在外部 Maven 存储库(版本 2.3.5)上可用时,我们收到以下错误:

...
[FATAL ERROR] org.apache.felix.bundleplugin.BundlePlugin#execute() caused a linkage error (java.lang.NoSuchMethodError) and may be out-of-date. Check the realms:
[FATAL ERROR] Plugin realm = app0.child-container[org.apache.felix:maven-bundle-plugin:2.3.5]
...

我们通过在 pom.xml 中明确说明插件的版本解决了这个问题:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.3.4</version>
</plugin>

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我看到您正在使用 Emma 报告。可能是这个插件的依赖有问题。缺课应在maven-plugin-api 工件中。

    首先尝试注释掉 Emma 报告,如果这有助于尝试使用此插件的另一个版本或通过在 your pom 中添加适当的依赖项来修复它 - 在您的情况下是 maven-plugin-api。

    【讨论】:

    • 谢谢你的提示,我会试试看是否能解决问题。
    【解决方案3】:

    首先,如果可能,请使用最新版本的 Maven (2.2.1),它的超级 pom 将正确包含可能解决您问题的新版本。然后尝试使用 -cpu 强制插件更新,即:

    mvn -cpu 站点

    如果您使用的是快照,那么还要添加 -U。最后,如果您冻结项目中的插件版本,请尝试更新它们。如果所有其他方法都失败了,请查看有效的 pom (mvn help:effective-pom) 以查看 bing 使用的版本,然后 google 查找错误

    【讨论】:

    • 谢谢你的提示,我会试试看是否能解决问题。
    【解决方案4】:

    应该适用于 Maven 2.1.0(即使升级是个好主意)。尝试通过显式设置版本在您的 POM 中使用更新版本的插件(无论如何您都应该使用固定版本):

    <project>
      ...
      <build>
        <!-- To define the plugin version in your parent POM -->
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-site-plugin</artifactId>
              <!-- Lock down plugin version for build reproducibility -->
              <version>2.0.1</version>
            </plugin>
            ...
          </plugins>
        </pluginManagement>
        <!-- To use the plugin goals in your POM or parent POM -->
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
          </plugin>
          ...
        </plugins>
      </build>
      ...
    </project>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-04
      • 2015-02-20
      • 2019-10-27
      • 2010-11-07
      • 1970-01-01
      • 2015-12-30
      • 1970-01-01
      • 2015-10-31
      相关资源
      最近更新 更多