Closed
Description
Not a plexus-compiler per se, but since -XDuseUnsharedTable=true
is now default since 2.14.0 in c396cc8, I thought I share it here.
I can reproduce it with both Java 17 and 21. I first noticed it while upgrading maven-compiler-plugin from 3.11.0 to 3.12.1 (which uses plexus-compiler 2.14.2). But it also happens with maven-compiler-plugin 3.11.0 + -XDuseUnsharedTable=true
compiler argument.
The problematic code was using raw parameterized class. Something like var context = new Context(...)
. Specifying the parameterized type fixed the issue, i.e., var context = new Context<Key, Value>(...)
. I didn't debug it further, though.
The stack trace:
Fatal error compiling: Cannot load from object array because "this.hashes" is null -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.11.0:testCompile (default-testCompile) on project ...: Fatal error compiling
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:210)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:195)
at java.util.concurrent.FutureTask.run (FutureTask.java:317)
at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:572)
at java.util.concurrent.FutureTask.run (FutureTask.java:317)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1144)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:642)
at java.lang.Thread.run (Thread.java:1583)
Caused by: org.apache.maven.plugin.MojoExecutionException: Fatal error compiling
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:1143)
at org.apache.maven.plugin.compiler.TestCompilerMojo.execute (TestCompilerMojo.java:199)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:210)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:195)
at java.util.concurrent.FutureTask.run (FutureTask.java:317)
at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:572)
at java.util.concurrent.FutureTask.run (FutureTask.java:317)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1144)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:642)
at java.lang.Thread.run (Thread.java:1583)
Caused by: org.codehaus.plexus.compiler.CompilerException: Cannot load from object array because "this.hashes" is null
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess (JavaxToolsCompiler.java:198)
at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile (JavacCompiler.java:183)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:1140)
at org.apache.maven.plugin.compiler.TestCompilerMojo.execute (TestCompilerMojo.java:199)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:210)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:195)
at java.util.concurrent.FutureTask.run (FutureTask.java:317)
at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:572)
at java.util.concurrent.FutureTask.run (FutureTask.java:317)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1144)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:642)
at java.lang.Thread.run (Thread.java:1583)
Caused by: java.lang.NullPointerException: Cannot load from object array because "this.hashes" is null
at com.sun.tools.javac.util.UnsharedNameTable.fromValidUtf (UnsharedNameTable.java:97)
at com.sun.tools.javac.util.UnsharedNameTable.fromUtf (UnsharedNameTable.java:91)
at com.sun.tools.javac.util.Names.fromUtf (Names.java:455)
at com.sun.tools.javac.jvm.PoolReader.resolve (PoolReader.java:233)
at com.sun.tools.javac.jvm.PoolReader$ImmutablePoolHelper.readIfNeeded (PoolReader.java:391)
at com.sun.tools.javac.jvm.PoolReader.getName (PoolReader.java:185)
at com.sun.tools.javac.jvm.PoolReader.resolve (PoolReader.java:247)
at com.sun.tools.javac.jvm.PoolReader$ImmutablePoolHelper.readIfNeeded (PoolReader.java:391)
at com.sun.tools.javac.jvm.PoolReader.getClass (PoolReader.java:121)
at com.sun.tools.javac.jvm.ClassReader.readClass (ClassReader.java:2584)
at com.sun.tools.javac.jvm.ClassReader.readClassBuffer (ClassReader.java:2732)
at com.sun.tools.javac.jvm.ClassReader.readClassFile (ClassReader.java:2756)
at com.sun.tools.javac.code.ClassFinder.fillIn (ClassFinder.java:373)
at com.sun.tools.javac.code.ClassFinder.complete (ClassFinder.java:302)
at com.sun.tools.javac.code.Symbol.complete (Symbol.java:682)
at com.sun.tools.javac.code.Symbol$ClassSymbol.complete (Symbol.java:1418)
at com.sun.tools.javac.code.Symbol.apiComplete (Symbol.java:688)
at com.sun.tools.javac.jvm.ClassReader$1.getEnclosingType (ClassReader.java:597)
at com.sun.tools.javac.code.Printer.visitClassType (Printer.java:228)
at com.sun.tools.javac.code.Printer.visitClassType (Printer.java:52)
at com.sun.tools.javac.code.Type$ClassType.accept (Type.java:1050)
at com.sun.tools.javac.code.Printer.visit (Printer.java:136)
at com.sun.tools.javac.code.Printer.visitTypes (Printer.java:108)
at com.sun.tools.javac.code.Printer.visitClassType (Printer.java:239)
at com.sun.tools.javac.code.Printer.visitClassType (Printer.java:52)
at com.sun.tools.javac.code.Type$ClassType.accept (Type.java:1050)
at com.sun.tools.javac.code.Printer.visit (Printer.java:136)
at com.sun.tools.javac.code.Printer.visitTypes (Printer.java:108)
at com.sun.tools.javac.code.Printer.visitClassType (Printer.java:239)
at com.sun.tools.javac.code.Printer.visitClassType (Printer.java:52)
at com.sun.tools.javac.code.Type$ClassType.accept (Type.java:1050)
at com.sun.tools.javac.code.Printer.visit (Printer.java:136)
at com.sun.tools.javac.code.Printer.visitTypes (Printer.java:108)
at com.sun.tools.javac.code.Printer.printMethodArgs (Printer.java:339)
at com.sun.tools.javac.code.Printer.visitMethodSymbol (Printer.java:381)
at com.sun.tools.javac.code.Printer.visitMethodSymbol (Printer.java:52)
at com.sun.tools.javac.code.Symbol$MethodSymbol.accept (Symbol.java:2271)
at com.sun.tools.javac.code.Printer.visit (Printer.java:147)
at com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArgument (AbstractDiagnosticFormatter.java:206)
at com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArguments (AbstractDiagnosticFormatter.java:167)
at com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage (BasicDiagnosticFormatter.java:111)
at com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMeta (BasicDiagnosticFormatter.java:186)
at com.sun.tools.javac.util.BasicDiagnosticFormatter.formatDiagnostic (BasicDiagnosticFormatter.java:100)
at com.sun.tools.javac.util.AbstractDiagnosticFormatter.format (AbstractDiagnosticFormatter.java:123)
at com.sun.tools.javac.util.AbstractDiagnosticFormatter.format (AbstractDiagnosticFormatter.java:75)
at com.sun.tools.javac.util.JCDiagnostic.toString (JCDiagnostic.java:800)
at com.sun.tools.javac.api.ClientCodeWrapper$DiagnosticSourceUnwrapper.toString (ClientCodeWrapper.java:852)
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess (JavaxToolsCompiler.java:154)
at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile (JavacCompiler.java:183)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:1140)
at org.apache.maven.plugin.compiler.TestCompilerMojo.execute (TestCompilerMojo.java:199)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:210)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:195)
at java.util.concurrent.FutureTask.run (FutureTask.java:317)
at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:572)
at java.util.concurrent.FutureTask.run (FutureTask.java:317)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1144)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:642)
at java.lang.Thread.run (Thread.java:1583)
Metadata
Metadata
Assignees
Labels
No labels