Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
lgemeinhardt opened this issue Mar 1, 2019 · 4 comments

Comments

@lgemeinhardt
Copy link

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.

@regrog
Copy link

regrog commented Mar 4, 2019

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

@laurent-malvert
Copy link

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.

@martinschaef
Copy link

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

@tbroyer
Copy link
Contributor

tbroyer commented Apr 14, 2019

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 –probably only needed at compile-time)

ronshapiro pushed a commit that referenced this issue Apr 18, 2019
Fixes #1259, fixes #1238

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=243966733
@ronshapiro ronshapiro mentioned this issue Apr 18, 2019
@cushon cushon closed this as completed in 988857f Apr 18, 2019
lgemeinhardt added a commit to lgemeinhardt/error-prone that referenced this issue Nov 5, 2019
don-vip pushed a commit to don-vip/error-prone that referenced this issue Feb 29, 2020
lgemeinhardt added a commit to lgemeinhardt/error-prone that referenced this issue Oct 22, 2024
Add google-java-format in with-dependencies JAR, broken after google@5f71110
Similar to google#1398, google#1259 and google#1238
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
5 participants