Error-prone: java.lang.NoClassDefFoundError: com/google/common/util/concurrent/internal/InternalFutureFailureAccess while using the "with-dependencies.jar"

Created on 1 Mar 2019  路  4Comments  路  Source: google/error-prone

Description of the problem / feature request:

java.lang.NoClassDefFoundError: com/google/common/util/concurrent/internal/InternalFutureFailureAccess while using the "with-dependencies.jar"

Bugs: what's the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.

Run error-prone with the "with-dependencies.jar" (only this is broken)

What version of Error Prone are you using?

2.3.3

Have you found anything relevant by searching the web?

I could workaround the issue while adding the missing "failureaccess" jar (version 1.0.1) from guava to the path, but this should bundled with the with-dependencies.jar. I guess after splitting guava in one on the latest versions this was not added to the "with-dependencies.jar" packager.

Most helpful comment

Also occurs when running the example from the tutorial: https://errorprone.info/docs/installation

All 4 comments

Same error here

    [javac]      error-prone version: 2.3.3
    [javac]      BugPattern: ProtoFieldNullComparison
    [javac]      Stack Trace:
    [javac]      java.lang.NoClassDefFoundError: com/google/common/util/concurrent/internal/InternalFutureFailureAccess
    [javac]     at java.lang.ClassLoader.defineClass1(Native Method)
    [javac]     at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    [javac]     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    [javac]     at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    [javac]     at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    [javac]     at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    [javac]     at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    [javac]     at java.security.AccessController.doPrivileged(Native Method)
    [javac]     at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    [javac]     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    [javac]     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    [javac]     at java.lang.ClassLoader.defineClass1(Native Method)
    [javac]     at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    [javac]     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    [javac]     at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    [javac]     at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    [javac]     at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    [javac]     at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    [javac]     at java.security.AccessController.doPrivileged(Native Method)
    [javac]     at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    [javac]     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    [javac]     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    [javac]     at java.lang.ClassLoader.defineClass1(Native Method)
    [javac]     at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    [javac]     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    [javac]     at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    [javac]     at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    [javac]     at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    [javac]     at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    [javac]     at java.security.AccessController.doPrivileged(Native Method)
    [javac]     at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    [javac]     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    [javac]     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    [javac]     at com.google.common.cache.LocalCache$LoadingValueReference.<init>(LocalCache.java:3471)
    [javac]     at com.google.common.cache.LocalCache$LoadingValueReference.<init>(LocalCache.java:3475)
    [javac]     at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2133)
    [javac]     at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2044)
    [javac]     at com.google.common.cache.LocalCache.get(LocalCache.java:3952)
    [javac]     at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974)
    [javac]     at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958)
    [javac]     at com.google.errorprone.VisitorState.getTypeFromString(VisitorState.java:335)
    [javac]     at com.google.errorprone.suppliers.Suppliers$5.get(Suppliers.java:121)
    [javac]     at com.google.errorprone.suppliers.Suppliers$5.get(Suppliers.java:118)
    [javac]     at com.google.errorprone.predicates.type.Exact.apply(Exact.java:36)
    [javac]     at com.google.errorprone.matchers.method.MethodClassMatcherImpl.matchResult(MethodClassMatcherImpl.java:44)
    [javac]     at com.google.errorprone.matchers.method.MethodClassMatcherImpl.matchResult(MethodClassMatcherImpl.java:31)
    [javac]     at com.google.errorprone.matchers.method.AbstractChainedMatcher.matchResult(AbstractChainedMatcher.java:39)
    [javac]     at com.google.errorprone.matchers.method.AbstractChainedMatcher.matchResult(AbstractChainedMatcher.java:37)
    [javac]     at com.google.errorprone.matchers.method.AbstractSimpleMatcher.matches(AbstractSimpleMatcher.java:30)
    [javac]     at com.google.errorprone.matchers.method.AbstractSimpleMatcher.matches(AbstractSimpleMatcher.java:25)
    [javac]     at com.google.errorprone.matchers.Matchers$5.matches(Matchers.java:156)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitMethodInvocation(ProtoFieldNullComparison.java:217)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitMethodInvocation(ProtoFieldNullComparison.java:164)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1644)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    [javac]     at com.sun.source.util.TreeScanner.visitMemberSelect(TreeScanner.java:680)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:2112)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    [javac]     at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
    [javac]     at com.sun.source.util.TreeScanner.visitMethodInvocation(TreeScanner.java:508)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitMethodInvocation(ProtoFieldNullComparison.java:227)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitMethodInvocation(ProtoFieldNullComparison.java:164)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1644)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    [javac]     at com.sun.source.util.TreeScanner.visitMemberSelect(TreeScanner.java:680)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:2112)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    [javac]     at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
    [javac]     at com.sun.source.util.TreeScanner.visitMethodInvocation(TreeScanner.java:508)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitMethodInvocation(ProtoFieldNullComparison.java:227)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitMethodInvocation(ProtoFieldNullComparison.java:164)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1644)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    [javac]     at com.sun.source.util.TreeScanner.visitBinary(TreeScanner.java:624)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitBinary(ProtoFieldNullComparison.java:196)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitBinary(ProtoFieldNullComparison.java:164)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1993)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    [javac]     at com.sun.source.util.TreeScanner.visitBinary(TreeScanner.java:624)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitBinary(ProtoFieldNullComparison.java:196)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitBinary(ProtoFieldNullComparison.java:164)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1993)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    [javac]     at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
    [javac]     at com.sun.source.util.TreeScanner.visitVariable(TreeScanner.java:223)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitVariable(ProtoFieldNullComparison.java:190)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitVariable(ProtoFieldNullComparison.java:164)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:968)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    [javac]     at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
    [javac]     at com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
    [javac]     at com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:248)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1026)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    [javac]     at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
    [javac]     at com.sun.source.util.TreeScanner.visitMethod(TreeScanner.java:206)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitMethod(ProtoFieldNullComparison.java:174)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitMethod(ProtoFieldNullComparison.java:164)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:898)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    [javac]     at com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
    [javac]     at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113)
    [javac]     at com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:187)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitClass(ProtoFieldNullComparison.java:179)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison$ProtoNullComparisonScanner.visitClass(ProtoFieldNullComparison.java:164)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    [javac]     at com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
    [javac]     at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113)
    [javac]     at com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:144)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:591)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:56)
    [javac]     at com.google.errorprone.bugpatterns.ProtoFieldNullComparison.matchCompilationUnit(ProtoFieldNullComparison.java:160)
    [javac]     at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:433)
    [javac]     at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:541)
    [javac]     at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:150)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:591)
    [javac]     at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:56)
    [javac]     at com.google.errorprone.scanner.Scanner.scan(Scanner.java:55)
    [javac]     at com.google.errorprone.scanner.ErrorProneScannerTransformer.apply(ErrorProneScannerTransformer.java:43)
    [javac]     at com.google.errorprone.ErrorProneAnalyzer.finished(ErrorProneAnalyzer.java:151)
    [javac]     at com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:120)
    [javac]     at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1404)
    [javac]     at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1353)
    [javac]     at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:946)
    [javac]     at com.sun.tools.javac.main.Main.compile(Main.java:302)
    [javac]     at com.sun.tools.javac.main.Main.compile(Main.java:162)
    [javac]     at com.sun.tools.javac.Main.compile(Main.java:57)
    [javac]     at com.sun.tools.javac.Main.main(Main.java:43)
    [javac]   Caused by: java.lang.ClassNotFoundException: com.google.common.util.concurrent.internal.InternalFutureFailureAccess
    [javac]     at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    [javac]     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    [javac]     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    [javac]     ... 129 more
    [javac] 1 error

Confirmed for me as well. The workaround (adding the missing dependency) works fine, but futureaccess-1.0.1.jar should indeed be part of the with-dependencies.jar already.

Also occurs when running the example from the tutorial: https://errorprone.info/docs/installation

The fix should be a oneliner: #1259

Fwiw:

[INFO] Including com.google.errorprone:error_prone_annotation:jar:2.3.4-SNAPSHOT in the shaded jar.
[INFO] Including com.google.errorprone:error_prone_type_annotations:jar:2.3.4-SNAPSHOT in the shaded jar.
[INFO] Including com.google.errorprone:error_prone_check_api:jar:2.3.4-SNAPSHOT in the shaded jar.
[INFO] Excluding com.googlecode.java-diff-utils:diffutils:jar:1.3.0 from the shaded jar.
[INFO] Including com.github.kevinstern:software-and-algorithms:jar:1.0 in the shaded jar.
[INFO] Including com.github.stephenc.jcip:jcip-annotations:jar:1.0-1 in the shaded jar.
[INFO] Including org.pcollections:pcollections:jar:2.1.2 in the shaded jar.
[INFO] Including com.google.guava:guava:jar:27.0.1-jre in the shaded jar.
[INFO] Including com.google.guava:failureaccess:jar:1.0.1 in the shaded jar.
[INFO] Excluding com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava from the shaded jar.
[INFO] Excluding org.checkerframework:checker-qual:jar:2.5.2 from the shaded jar.
[INFO] Excluding com.google.j2objc:j2objc-annotations:jar:1.1 from the shaded jar.
[INFO] Excluding org.codehaus.mojo:animal-sniffer-annotations:jar:1.17 from the shaded jar.
[INFO] Including com.google.auto:auto-common:jar:0.10 in the shaded jar.
[INFO] Excluding com.google.code.findbugs:jFormatString:jar:3.0.0 from the shaded jar.
[INFO] Including com.google.code.findbugs:jsr305:jar:3.0.0 in the shaded jar.
[INFO] Excluding org.checkerframework:dataflow:jar:2.5.3 from the shaded jar.
[INFO] Excluding org.checkerframework:javacutil:jar:2.5.3 from the shaded jar.
[INFO] Excluding com.google.errorprone:javac:jar:9+181-r4173-1 from the shaded jar.
[INFO] Including com.google.errorprone:error_prone_annotations:jar:2.3.4-SNAPSHOT in the shaded jar.
[INFO] Including com.google.protobuf:protobuf-java:jar:3.4.0 in the shaded jar.

I have no idea if diffutils, dataflow or javacutils would need to be added as well (other excluded dependencies are either willful, or annotations only 鈥損robably only needed at compile-time)

Was this page helpful?
0 / 5 - 0 ratings