Skip to content

HidingField: NoSuchMethodError: 'com.sun.tools.javac.util.List com.sun.tools.javac.code.Symbol$TypeSymbol.getEnclosedElements #2092

Closed
@pzygielo

Description

@pzygielo
Contributor

Description of the problem:

After upgrading errorprone from 2.4.0 to 2.5.0 following is reported in [my project's] maven build (with JDK8, JDK11, JDK12 or JDK13):

An unhandled exception was thrown by the Error Prone static analysis plugin.
     Please report this at https://github.com/google/error-prone/issues/new and include the following:
  
     error-prone version: 2.5.0
     BugPattern: HidingField
     Stack Trace:
     java.lang.NoSuchMethodError: 'com.sun.tools.javac.util.List com.sun.tools.javac.code.Symbol$TypeSymbol.getEnclosedElements()'
  	at com.google.errorprone.bugpatterns.HidingField.matchClass(HidingField.java:73)
  	at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:450)
  	at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:548)
  	at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:151)
  	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
  	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
  	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
  	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
  	at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
  	at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113)
  	at jdk.compiler/com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:144)
  	at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:561)
  	at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:151)
  	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:591)
  	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:56)
  	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:58)
  	at com.google.errorprone.scanner.ErrorProneScannerTransformer.apply(ErrorProneScannerTransformer.java:43)
  	at com.google.errorprone.ErrorProneAnalyzer.finished(ErrorProneAnalyzer.java:152)
  	at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1418)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1365)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:960)
  	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
  	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:147)
  	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
  	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
  	at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:126)
  	at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:174)
  	at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1134)
  	at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:187)
  	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
  	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
  	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
  	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
  	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
  	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
  	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
  	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
  	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
  	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
  	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
  	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
  	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
  	at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
  	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
  	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
  	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  	at org.apache.maven.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:39)
  	at org.apache.maven.wrapper.WrapperExecutor.execute(WrapperExecutor.java:122)
  	at org.apache.maven.wrapper.MavenWrapperMain.main(MavenWrapperMain.java:61)

The same code works fine with JDK14 and JDK15.

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

What version of Error Prone are you using?

2.5.0

Have you found anything relevant by searching the web?

#1529

Activity

cushon

cushon commented on Jan 12, 2021

@cushon
Collaborator

This release was built against a newer JDK and picked up this backwards-incompatible change: openjdk/jdk@827e5e3#diff-9b6c5d86aacec00206bfcdbfc12caa41fbb0812426c4f2fd290c3fb1873a532fR840

I can work around that specific example, but if there are a lot more examples of this we should go back to building the release against JDK 8.

Do you mind disabling that particular check with -Xep:HidingField:OFF as an experiment, to see if there are other crashes?

ZacSweers

ZacSweers commented on Jan 12, 2021

@ZacSweers

Our codebase appears to compile with that disabled

pzygielo

pzygielo commented on Jan 12, 2021

@pzygielo
ContributorAuthor

Our codebase appears to compile with that disabled

The same on my side - with -Xep:HidingField:OFF build completes with no other error.

lgemeinhardt

lgemeinhardt commented on Jan 13, 2021

@lgemeinhardt
Contributor

This issue looks similar, even if the BugPattern is ComputeIfAbsentAmbiguousReference

[javac]      Please report this at https://github.com/google/error-prone/issues/new and include the following:
[javac]   
[javac]      error-prone version: 2.5.0
[javac]      BugPattern: ComputeIfAbsentAmbiguousReference
[javac]      Stack Trace:
[javac]      java.lang.NoSuchMethodError: com.sun.tools.javac.code.Symbol$ClassSymbol.getEnclosedElements()Lcom/sun/tools/javac/util/List;
[javac]   	at com.google.errorprone.util.ASTHelpers.getConstructors(ASTHelpers.java:958)
[javac]   	at com.google.errorprone.bugpatterns.ComputeIfAbsentAmbiguousReference.matchMethodInvocation(ComputeIfAbsentAmbiguousReference.java:75)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:450)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitMethodInvocation(ErrorProneScanner.java:747)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitMethodInvocation(ErrorProneScanner.java:151)
[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.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
[javac]   	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
[javac]   	at com.sun.source.util.TreeScanner.visitMemberSelect(TreeScanner.java:680)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitMemberSelect(ErrorProneScanner.java:729)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitMemberSelect(ErrorProneScanner.java:151)
[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.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
[javac]   	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
[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.scanner.ErrorProneScanner.visitMethodInvocation(ErrorProneScanner.java:752)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitMethodInvocation(ErrorProneScanner.java:151)
[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.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
[javac]   	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
[javac]   	at com.sun.source.util.TreeScanner.visitExpressionStatement(TreeScanner.java:433)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitExpressionStatement(ErrorProneScanner.java:634)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitExpressionStatement(ErrorProneScanner.java:151)
[javac]   	at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1454)
[javac]   	at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
[javac]   	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
[javac]   	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
[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.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:521)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:151)
[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.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
[javac]   	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
[javac]   	at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
[javac]   	at com.sun.source.util.TreeScanner.visitEnhancedForLoop(TreeScanner.java:306)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitEnhancedForLoop(ErrorProneScanner.java:621)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitEnhancedForLoop(ErrorProneScanner.java:151)
[javac]   	at com.sun.tools.javac.tree.JCTree$JCEnhancedForLoop.accept(JCTree.java:1166)
[javac]   	at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
[javac]   	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
[javac]   	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
[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.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:521)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:151)
[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.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
[javac]   	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
[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.scanner.ErrorProneScanner.visitMethod(ErrorProneScanner.java:741)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitMethod(ErrorProneScanner.java:151)
[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.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
[javac]   	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
[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.scanAndReduce(TreeScanner.java:113)
[javac]   	at com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:187)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:549)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:151)
[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.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
[javac]   	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
[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.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:561)
[javac]   	at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:151)
[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:58)
[javac]   	at com.google.errorprone.scanner.ErrorProneScannerTransformer.apply(ErrorProneScannerTransformer.java:43)
[javac]   	at com.google.errorprone.ErrorProneAnalyzer.finished(ErrorProneAnalyzer.java:152)
[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] 1 error
chanseokoh

chanseokoh commented on Jan 13, 2021

@chanseokoh
Member

Same error here. Using JDK 8.

cushon

cushon commented on Jan 14, 2021

@cushon
Collaborator

Thanks for the additional reports. #2092 (comment) looks like a distinct issue with the same root cause.

I'm going to release a 2.5.1 built on JDK 8 that will resolve this issue.

self-assigned this
on Jan 14, 2021
cushon

cushon commented on Jan 15, 2021

@cushon
Collaborator

11 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

    Development

    No branches or pull requests

      Participants

      @tbroyer@msridhar@cushon@ZacSweers@lgemeinhardt

      Issue actions

        HidingField: NoSuchMethodError: 'com.sun.tools.javac.util.List com.sun.tools.javac.code.Symbol$TypeSymbol.getEnclosedElements · Issue #2092 · google/error-prone