2009-03-09 8 views
1

ich findbugs in meinem ant lib installiert und hinzugefügt, um den folgenden Code in meinen Haupt-ANT-Skript:FindBugs nicht akzeptieren bcel.jar in ANT-Skript

<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> 

Das folgende XML wird im init Ziel genannt:

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

auf dem ANT-Skript ausgeführt wird, alles, was ich bekommen, ist die folgende Ausgabe:

 
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 

Warum ist findbu funktioniert nicht?

Antwort

2

Sie haben einen Konflikt mit einer älteren Version von BCEL, die Sie loswerden müssen. Es könnte in Ihrem jre/lib/ext-Verzeichnis (schlechte Idee) sein, oder Teil des CLASSPATH, den Sie für Ihr Projekt haben, oder vielleicht ein Teil von Ant/lib. In jedem Fall sollten Sie alle BCEL-JARs in Ihrem CLASSPATH finden, entfernen und mit der von FindBugs benötigten Version aktualisieren.

-1

Wenn findbugs seine eigene Version von BCEL hat dann, warum ich diese Fehlermeldung erhalten:

[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 

Dieser Fehler tritt auf, wenn ich bcel.jar aus dem findbugs.home Verzeichnis zu entfernen.

0

Java Version 1.6.0_06 enthält alte BCEL-Bibliothek.

java version "1.6.0_06" Java (TM) SE Runtime Environment (build 1.6.0_06-b02) Java HotSpot (TM) Client VM (Build 10.0-b22, mixed mode)

Sobald ich Änderung zu 1.5.0_17 es funktioniert gut für mich.

0

Ich fand heraus, dass die xalan:xalan:jar:2.6.0-Bibliothek (die eine transitive Abhängigkeit der -Bibliothek in meinem Projekt war) enthält die org.apache.bcel.generic.ObjectType-Klasse (in einer falschen Version, vielleicht). Diese Klasse ist vielleicht derjenige, der die folgenden Fehlerursache:

 
[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) 

Da das Artefakt nicht für die Kompilierung (in unserem Fall) erforderlich war, änderten wir nur ihren Umfang runtime in der Maven pom.xml Datei und diesem Fehler wieder verschwunden und die mvn clean findbugs:findbugs findbugs:gui funktioniert (zumindest für mich):

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

Hope this jemandes Arsch rettet ...