findbugsMain task hangs in 2.1 due to CNFE

The findbugsMain task on my war project hangs as of Gradle 2.1. The cause for that is a ClassNotFoundException:

Pass 1: Analyzing classes (683 / 683) - 100% complete
                                                                                                                                                                                                        e
16:29:01.322 [DEBUG] [system.out] 16:29:01.322 [DEBUG] [org.gradle.process.internal.child.ActionExecutionWorker] Stopping client connection.
16:29:01.323 [DEBUG] [system.err] 16:29:01.323 [ERROR] [system.err] java.lang.NoClassDefFoundError: org/apache/bcel/generic/VisitorSupportsInvokeDynamic
16:29:01.323 [DEBUG] [system.err] 16:29:01.323 [ERROR] [system.err]
at java.lang.ClassLoader.defineClass1(Native Method)
16:29:01.323 [DEBUG] [system.err] 16:29:01.323 [ERROR] [system.err]
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
16:29:01.324 [DEBUG] [system.err] 16:29:01.323 [ERROR] [system.err]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
16:29:01.324 [DEBUG] [system.err] 16:29:01.324 [ERROR] [system.err]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
16:29:01.324 [DEBUG] [system.err] 16:29:01.324 [ERROR] [system.err]
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
16:29:01.324 [DEBUG] [system.err] 16:29:01.324 [ERROR] [system.err]
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
16:29:01.324 [DEBUG] [system.err] 16:29:01.324 [ERROR] [system.err]
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
16:29:01.325 [DEBUG] [system.err] 16:29:01.325 [ERROR] [system.err]
at java.security.AccessController.doPrivileged(Native Method)
16:29:01.325 [DEBUG] [system.err] 16:29:01.325 [ERROR] [system.err]
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
16:29:01.325 [DEBUG] [system.err] 16:29:01.325 [ERROR] [system.err]
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
16:29:01.325 [DEBUG] [system.err] 16:29:01.325 [ERROR] [system.err]
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
16:29:01.325 [DEBUG] [system.err] 16:29:01.325 [ERROR] [system.err]
at java.lang.ClassLoader.defineClass1(Native Method)
16:29:01.326 [DEBUG] [system.err] 16:29:01.326 [ERROR] [system.err]
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
16:29:01.326 [DEBUG] [system.err] 16:29:01.326 [ERROR] [system.err]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
16:29:01.326 [DEBUG] [system.err] 16:29:01.326 [ERROR] [system.err]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
16:29:01.326 [DEBUG] [system.err] 16:29:01.326 [ERROR] [system.err]
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
16:29:01.327 [DEBUG] [system.err] 16:29:01.326 [ERROR] [system.err]
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
16:29:01.327 [DEBUG] [system.err] 16:29:01.327 [ERROR] [system.err]
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
16:29:01.327 [DEBUG] [system.err] 16:29:01.327 [ERROR] [system.err]
at java.security.AccessController.doPrivileged(Native Method)
16:29:01.327 [DEBUG] [system.err] 16:29:01.327 [ERROR] [system.err]
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
16:29:01.327 [DEBUG] [system.err] 16:29:01.327 [ERROR] [system.err]
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
16:29:01.328 [DEBUG] [system.err] 16:29:01.327 [ERROR] [system.err]
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
16:29:01.328 [DEBUG] [system.err] 16:29:01.328 [ERROR] [system.err]
at java.lang.Class.getDeclaredConstructors0(Native Method)
16:29:01.328 [DEBUG] [system.err] 16:29:01.328 [ERROR] [system.err]
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2532)
16:29:01.328 [DEBUG] [system.err] 16:29:01.328 [ERROR] [system.err]
at java.lang.Class.getConstructor0(Class.java:2842)
16:29:01.328 [DEBUG] [system.err] 16:29:01.328 [ERROR] [system.err]
at java.lang.Class.getConstructor(Class.java:1718)
16:29:01.329 [DEBUG] [system.err] 16:29:01.328 [ERROR] [system.err]
at edu.umd.cs.findbugs.DetectorFactory$ReflectionDetectorCreator.createDetector(DetectorFactory.java:77)
16:29:01.329 [DEBUG] [system.err] 16:29:01.329 [ERROR] [system.err]
at edu.umd.cs.findbugs.DetectorFactory$ReflectionDetectorCreator.createDetector2(DetectorFactory.java:102)
16:29:01.329 [DEBUG] [system.err] 16:29:01.329 [ERROR] [system.err]
at edu.umd.cs.findbugs.DetectorFactory.createDetector2(DetectorFactory.java:396)
16:29:01.329 [DEBUG] [system.err] 16:29:01.329 [ERROR] [system.err]
at edu.umd.cs.findbugs.plan.AnalysisPass.instantiateDetector2sInPass(AnalysisPass.java:132)
16:29:01.329 [DEBUG] [system.err] 16:29:01.329 [ERROR] [system.err]
at edu.umd.cs.findbugs.FindBugs2.analyzeApplication(FindBugs2.java:993)
16:29:01.329 [DEBUG] [system.err] 16:29:01.329 [ERROR] [system.err]
at edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:283)
16:29:01.329 [DEBUG] [system.err] 16:29:01.329 [ERROR] [system.err]
at org.gradle.api.plugins.quality.internal.findbugs.FindBugsExecuter.runFindbugs(FindBugsExecuter.java:44)
16:29:01.330 [DEBUG] [system.err] 16:29:01.330 [ERROR] [system.err]
at org.gradle.api.plugins.quality.internal.findbugs.FindBugsWorkerServer.execute(FindBugsWorkerServer.java:45)
16:29:01.330 [DEBUG] [system.err] 16:29:01.330 [ERROR] [system.err]
at org.gradle.api.plugins.quality.internal.findbugs.FindBugsWorkerServer.execute(FindBugsWorkerServer.java:35)
16:29:01.330 [DEBUG] [system.err] 16:29:01.330 [ERROR] [system.err]
at org.gradle.api.plugins.quality.internal.findbugs.FindBugsWorkerServer.execute(FindBugsWorkerServer.java:26)
16:29:01.330 [DEBUG] [system.err] 16:29:01.330 [ERROR] [system.err]
at org.gradle.process.internal.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:78)
16:29:01.330 [DEBUG] [system.err] 16:29:01.330 [ERROR] [system.err]
at org.gradle.process.internal.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:35)
16:29:01.331 [DEBUG] [system.err] 16:29:01.330 [ERROR] [system.err]
at org.gradle.process.internal.child.ImplementationClassLoaderWorker.execute(ImplementationClassLoaderWorker.java:85)
16:29:01.331 [DEBUG] [system.err] 16:29:01.331 [ERROR] [system.err]
at org.gradle.process.internal.child.ImplementationClassLoaderWorker.execute(ImplementationClassLoaderWorker.java:41)
16:29:01.331 [DEBUG] [system.err] 16:29:01.331 [ERROR] [system.err]
at org.gradle.process.internal.child.IsolatedApplicationClassLoaderWorker.call(IsolatedApplicationClassLoaderWorker.java:48)
16:29:01.331 [DEBUG] [system.err] 16:29:01.331 [ERROR] [system.err]
at org.gradle.process.internal.child.IsolatedApplicationClassLoaderWorker.call(IsolatedApplicationClassLoaderWorker.java:30)
16:29:01.331 [DEBUG] [system.err] 16:29:01.331 [ERROR] [system.err]
at org.gradle.process.internal.launcher.GradleWorkerMain.run(GradleWorkerMain.java:32)
16:29:01.331 [DEBUG] [system.err] 16:29:01.331 [ERROR] [system.err]
at org.gradle.process.internal.launcher.GradleWorkerMain.main(GradleWorkerMain.java:37)
16:29:01.332 [DEBUG] [system.err] 16:29:01.332 [ERROR] [system.err] Caused by: java.lang.ClassNotFoundException: org.apache.bcel.generic.VisitorSupportsInvokeDynamic
16:29:01.332 [DEBUG] [system.err] 16:29:01.332 [ERROR] [system.err]
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
16:29:01.332 [DEBUG] [system.err] 16:29:01.332 [ERROR] [system.err]
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
16:29:01.332 [DEBUG] [system.err] 16:29:01.332 [ERROR] [system.err]
at java.security.AccessController.doPrivileged(Native Method)
16:29:01.332 [DEBUG] [system.err] 16:29:01.332 [ERROR] [system.err]
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
16:29:01.333 [DEBUG] [system.err] 16:29:01.333 [ERROR] [system.err]
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
16:29:01.333 [DEBUG] [system.err] 16:29:01.333 [ERROR] [system.err]
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
16:29:01.333 [DEBUG] [system.err] 16:29:01.333 [ERROR] [system.err]
... 44 more
16:29:01.359 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: FAILED
16:29:01.359 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Process 'Gradle FindBugs Worker 2' finished with exit value 1 (state: FAILED)

So there are actually two issues: The findbugsMain task hanging when it does not complete normally and the ClassNotFoundException. The latter does not occur on some of my smaller non-war projects but I don’t know if there’s a connection. Also, it did not occur in Gradle 2.0.

The hanging issue is already reported as GRADLE-2810.

Hm, it’s using ‘org.apache.bcel:bcel:6.0-20140709’ which in fact does not include the class. Apparently, the initial findbugs 3.0.0 at jcenter was broken. I was too quick and got a broken pom that lists ‘org.apache.bcel:bcel:6.0-20140709’ as a dependency. A re-upload as 3.0.1 would have been nice…