JackieChan
JackieChan

Reputation: 1

Using findbugs To Scan A Specific Java Class File And Get "Unable to get XClass for java/lang/Object" Exception

I added spotbugs as dependency in my pom.xml.

    <dependency>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs</artifactId>
        <version>4.5.3</version>
    </dependency>

And I used spotbugs's API to scan a specific Java class file. After running the code I got these Exceptions: Unable to get XClass for java/lang/Object, Unable to get XClass for java/util/concurrent/FutureTask, Unable to get XClass for java/lang/String etc... Looks like I didnt include the JDK path correctly. Here is my code:

public class SpotBugsTest {
    public static void main(String[] args) {
        scanFiles();
    }
    private static void scanFiles() {

        DetectorFactoryCollection detectorFactoryCollection = DetectorFactoryCollection.instance();
        ExecutorService service = Executors.newCachedThreadPool();
        try (FindBugs2 findBugs = new FindBugs2(service)) {
            findBugs.setDetectorFactoryCollection(detectorFactoryCollection);
            TextUICommandLine commandLine = new TextUICommandLine();
            commandLine.getProject().addFile("D:\\MY_DATA\\codes\\open\\target\\classes\\com\\open\\util\\ThreadPoolUtil.class");
            commandLine.getProject().setProjectName("TestProject");
            commandLine.getProject().addAuxClasspathEntry("D:\\Dev\\testlibs\\app\\open\\bin\\lib");
            commandLine.getProject().addAuxClasspathEntry("D:\\Dev\\Java\\jdk1.8.0_311\\lib");
            commandLine.getProject().addAuxClasspathEntry("D:\\Dev\\Java\\jdk1.8.0_311\\jre\\lib");
            FindBugs.processCommandLine(commandLine, new String[]{}, findBugs);

            boolean justPrintConfiguration = commandLine.justPrintConfiguration();
            if (justPrintConfiguration || commandLine.justPrintVersion()) {
                Version.printVersion(justPrintConfiguration);
                return;
            }
            // Away we go!
            FindBugs.runMain(findBugs, commandLine);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            service.shutdown();
        }
    }
}

And here are the Exceptions:

The following errors occurred during analysis:
  Error scanning com/open/util/ThreadPoolUtil for referenced classes
    java.lang.IllegalArgumentException
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
      At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
      At edu.umd.cs.findbugs.FindBugs2.buildReferencedClassSet(FindBugs2.java:806)
      At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:249)
      At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
      At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
      At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
  Unable to get XClass for java/util/concurrent/LinkedBlockingQueue
    java.lang.IllegalArgumentException
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
      At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
      At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
      At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
      At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
      At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
      At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
      At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
      At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
  Unable to get XClass for java/lang/Integer
    java.lang.IllegalArgumentException
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
      At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
      At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
      At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
      At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
      At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
      At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
      At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
      At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
  Unable to get XClass for java/lang/Exception
    java.lang.IllegalArgumentException
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
      At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
      At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
      At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
      At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
      At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
      At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
      At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
      At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
  Unable to get XClass for java/util/concurrent/ExecutorService
    java.lang.IllegalArgumentException
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
      At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
      At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
      At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
      At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
      At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
      At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
      At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
      At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
  Unable to get XClass for java/lang/Runtime
    java.lang.IllegalArgumentException
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
      At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
      At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
      At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
      At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
      At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
      At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
      At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
      At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
  Unable to get XClass for java/util/concurrent/TimeUnit
    java.lang.IllegalArgumentException
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
      At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
      At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
      At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
      At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
      At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
      At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
      At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
      At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
  Unable to get XClass for java/lang/IllegalArgumentException
    java.lang.IllegalArgumentException
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
      At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
      At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
      At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
      At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
      At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
      At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
      At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
      At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
      At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
      At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
  Unable to get XClass for java/util/concurrent/Future

And more exceptios like those

What can i do to fix those exceptions and use findbugs's API to scan some specific Java class files or jars and make an static code analysis ?

Upvotes: 0

Views: 432

Answers (0)

Related Questions