2009-03-09 22 views
1

J'ai installé findbugs dans mon répertoire ant lib et a ajouté le code suivant dans mon script principal ANT:FindBugs ne pas accepter bcel.jar dans le script 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> 

Le code XML suivant est appelé dans la cible init:

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

Sur l'exécution du script ANT, tout ce que je reçois est la sortie suivante:

 
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 

Pourquoi est-findbu GS ne fonctionne pas?

Répondre

2

Vous avez un conflit avec une ancienne version de BCEL dont vous devez vous débarrasser. Cela peut être dans votre répertoire jre/lib/ext (mauvaise idée), ou une partie du CLASSPATH que vous avez pour votre projet, ou peut-être une partie de l'Ant/lib. Dans tous les cas, vous devriez trouver tous les JAR BCEL dans votre CLASSPATH, les supprimer et les mettre à jour avec la version requise par FindBugs.

-1

Si findbugs a sa propre version de BCEL alors pourquoi dois-je obtenir cette erreur:

[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 

Cette erreur se produit si je retire bcel.jar du répertoire findbugs.home.

0

Java Version 1.6.0_06 contient l'ancienne bibliothèque BCEL.

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, mode mixte)

Une fois que je changer pour 1.5.0_17 cela fonctionne bien pour moi.

0

J'ai découvert que la bibliothèque xalan:xalan:jar:2.6.0 (qui était une dépendance transitive de la bibliothèque org.apache.xmlgraphics:batik-bridge:jar:1.7 dans mon projet) contient la classe org.apache.bcel.generic.ObjectType (dans une mauvaise version, peut-être). Cette classe est peut-être celle qui provoque l'erreur suivante:

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

Comme l'artefact n'a pas été nécessaire pour la compilation (dans notre cas), nous venons de modifier son champ d'application runtime dans le fichier Maven pom.xml et cette erreur disparues et les mvn clean findbugs:findbugs findbugs:gui fonctionne à nouveau (au moins pour moi):

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

Hope this sauve le cul de quelqu'un ...