FindBugs не принимает bcel.jar в сценарии ANT - PullRequest
1 голос
/ 09 марта 2009

Я установил findbugs в каталог ant lib и добавил следующий код в мой основной скрипт ANT:

<target name="findbugs" depends="init">

    <findbugs home="C:\\findbugs\\" output="html outputFile="C:\\findbugs\\out.html" jvmargs="-Xms512M">
        <sourcePath path="${messageaggregator.src}" />
        <class location="${messageaggregator.src}"/>


    </findbugs>
</target>

В цели init вызывается следующий xml:

<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask">

При запуске сценария ANT все, что я получаю, это следующий вывод:

findbugs:
    [findbugs] Executing findbugs from ant task
    [findbugs] Running FindBugs...
    [findbugs] BCEL class compatability error.
    [findbugs] The version of class org.apache.bcel.generic.ObjectType found was not compatible with
    [findbugs] FindBugs.  Please remove any BCEL libraries that may be interfering. This may happen
    [findbugs] if you have an old version of BCEL or a library that includes an old version of BCEL
    [findbugs] in an "endorsed" directory.
    [findbugs] Output saved to C:\\findbugs\\out.html

Почему findbugs не работают?

Ответы [ 4 ]

2 голосов
/ 09 марта 2009

У вас есть конфликт со старой версией BCEL, от которой вам нужно избавиться. Это может быть в вашем каталоге jre / lib / ext (плохая идея), или в той части CLASSPATH, которую вы получили для своего проекта, или, возможно, часть Ant / lib. В любом случае вы должны найти все файлы JAR BCEL в CLASSPATH, удалить их и обновить их до версии, необходимой для FindBugs.

0 голосов
/ 11 марта 2011

Я обнаружил, что библиотека xalan:xalan:jar:2.6.0 (которая была транзитивной зависимостью от библиотеки org.apache.xmlgraphics:batik-bridge:jar:1.7 в моем проекте) содержит класс org.apache.bcel.generic.ObjectType (возможно, в неправильной версии). Этот класс, возможно, тот, который вызывает следующую ошибку:

[INFO] File Encoding is UTF-8
BCEL class compatability error.
The version of class org.apache.bcel.generic.ObjectType found was not compatible with
FindBugs.  Please remove any BCEL libraries that may be interfering.  This may happen
if you have an old version of BCEL or a library that includes an old version of BCEL
in an "endorsed" directory.
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Java returned: 1
[INFO] ------------------------------------------------------------------------
[INFO] Trace
: Java returned: 1
        at org.apache.tools.ant.taskdefs.Java.execute(Java.java:108)
        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.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at groovy.util.AntBuilder.nodeCompleted(AntBuilder.java:199)
        at groovy.util.BuilderSupport.doInvokeMethod(BuilderSupport.java:153)
        at groovy.util.AntBuilder.doInvokeMethod(AntBuilder.java:149)
        at groovy.util.BuilderSupport.invokeMethod(BuilderSupport.java:64)
        at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:784)
        at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:758)
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(ScriptBytecodeAdapter.java:170)
        at org.codehaus.mojo.findbugs.FindBugsGui.execute(FindBugsGui.groovy:163)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
        at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
        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)

Поскольку артефакт не нужен для компиляции (в нашем случае), мы просто изменили его область действия на runtime в файле Maven pom.xml, и эта ошибка исчезла, и mvn clean findbugs:findbugs findbugs:gui снова работает (по крайней мере, для меня) :

  ...
  <dependencies>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-bridge</artifactId>
      <version>1.7</version>
      <scope>runtime</scope>
    </dependency>
  </dependencies>
  ...

Надеюсь, это спасет чью-то задницу ...

0 голосов
/ 23 июня 2010

Java версии 1.6.0_06 содержит старую библиотеку BCEL.

Java-версия "1.6.0_06" Java (TM) SE Runtime Environment (сборка 1.6.0_06-b02) Клиентская виртуальная машина Java HotSpot (TM) (сборка 10.0-b22, смешанный режим)

Как только я перехожу на 1.5.0_17, он прекрасно работает для меня.

0 голосов
/ 10 марта 2009

Если findbugs имеет свою собственную версию BCEL, тогда почему я получаю эту ошибку:

[findbugs] Executing findbugs from ant task
[findbugs] Running FindBugs...
[findbugs] The java class is not found:  org.apache.bcel.classfile.ClassFormatException
[findbugs] Output saved to C:\\findbugs\\out.html

Эта ошибка возникает, если я удаляю bcel.jar из каталога findbugs.home.

...