2

アップデート

Hudson Findbugsプラグインバージョン4.3以降、これは問題ではなくなりました

更新を終了

私の問題の例として、私は次のプロジェクトを構築しようとしていますhttp://www.sonatype.com/books/mvnex-book/reference/multimodule.html

simple-parent/pom.xmlに以下を追加しました

<reporting>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>findbugs-maven-plugin</artifactId>
      <version>2.3</version>
      <configuration>
         <findbugsXmlOutput>true</findbugsXmlOutput>
         <findbugsXmlWithMessages>true</findbugsXmlWithMessages>
         <xmlOutput>true</xmlOutput>
      </configuration>
    </plugin>
  </plugins>
</reporting>

そして、simple-weather/pom.xmlとsimple-webapp/pom.xmlに次のように

<reporting>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>findbugs-maven-plugin</artifactId>
    </plugin>
  </plugins>
</reporting>

次の恐ろしいequalsメソッドをクラスの1つに挿入して、FindBugsにいくつかの問題を生成させました(0個のバグでエラーが発生しないため)。

public boolean equals(Object o) { return true; }

私はmaven2スタイルのプロジェクトでHudsonを使用しています。仕事は、目標を持った単純な親のpomを対象としています

clean site

次の例外が発生します。

[INFO] Generating "FindBugs Report" report.
[java] Warnings generated: 2
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Cannot inherit from final class
[INFO] ------------------------------------------------------------------------
[INFO] Trace
java.lang.VerifyError: Cannot inherit from final class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch2(RemoteClassLoader.java:370)
at sun.reflect.GeneratedMethodAccessor594.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:274)
at hudson.remoting.Request$2.run(Request.java:270)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
at java.lang.Thread.run(Thread.java:595)

バージョン情報:

  • Maven 2.2.1
  • Java 1.5.0_22
  • JBoss4.0.5.GA内で実行されているHudson1.341(1.339にもあります)(4.2.2.GAと5.1.0.GAで同じエラー)
  • MavenFindBugsプラグイン2.3
  • HudsonFindBugsプラグイン4.1

これを修正する方法について何かアイデアはありますか?

4

3 に答える 3

6

FindBugs FAQによると、この問題は、間違ったバージョンのApache BCELが使用されている場合に発生します(Q2:「FindBugs!」ボタンをクリックすると、NoSuchMethodErrorまたはVerifyErrorが発生します)。あなたの場合、クラスローディングの問題が原因で、maven-findbugs-pluginがJBossからBCELライブラリを取得していると思われます。HudsonのJiraには、 HUDSON-5134などの非常によく似たバグがいくつかあります(hudson findbugsプラグインも影響を受けます)。

私の理解では、この問題は最近(v1.338で)導入されており、回避策がある場合でも Hudsonのバグです(これはリグレッションであり、JBossの問題ではありません)。

これで、IMOに2つのソリューションがあります。

  • v1.338より前のバージョンのHudsonを使用します(このバージョンではリグレッションが報告されています)が、古いバージョンを使用してそれを維持することは、実際には実行可能なソリューションではありません。
  • bcel.jarJBoss(in )を削除するかserver/SERVERNAME/lib、maven-findbugs-pluginで使用されるバージョンに置き換えます(依存関係を参照)。これがJBossにどのように影響するかを正確に言うことはできません(削除すると、JBossをデバッグモードで実行する機能が失われるようですが、交換するとすべてが正常に機能するかどうかはわかりません) 。

何をするにしても、これはHudsonのリグレッションであるため、新しいJiraの問題( http://issues.hudson-ci.org/)を作成してください。回避策があるため、 HUDSON-5134を「修正しない」とマークしていますが、JBossライブラリをいじることは良い解決策ではないと思います(繰り返しますが、これはハドソンのバグです)。したがって、他のユーザーがこの問題の影響を受けていることをハドソンの開発者に主張して知らせることは、コミュニティ全体に役立つでしょう(少なくとも、そう願っています)。

于 2010-01-21T04:42:05.333 に答える
0

提供されている他の回答の方が優れていますが、追加する1つの方法は、Antまたはバッチファイルを使用して、FindBugsステップが失敗したことを気にしない別のビルドステップを作成することです。Hudsonプラグインは、引き続き結果を表示するために使用できます。

于 2010-01-21T12:46:38.763 に答える
0

Pascalが指摘しているように、同様のバグ(HUDSON-5134 )が提出されており、そのバグは、動作がHudsonリリース1.338で開始されたことを示しています。ハドソンは週に1回リリースするため、どのバージョンでバグが発生したかを特定するのは難しい場合があります。Hudsonバージョン1.337HUDSON-5048 )でリリースされたクラスローダー関連の変更があったことに気付きました。これが問題の原因であると思われますが、その直接的な証拠はありません。

ただし、この問題を回避するには、1.337以前にロールバックする必要がある可能性があります。

于 2010-01-21T15:16:51.760 に答える