apache / apache/maven-toolchains-plugin
[MTOOLCHAINS-59] Missing compiler error messages when using Java 19+ toolchains
- Dominant language
- Java
- Stars
- 27
- Forks
- 31
- PR merge metrics
- No merged PRs in 30d
Description
**[dennis lucero](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=striderapache)** opened **[MTOOLCHAINS-59](https://issues.apache.org/jira/browse/MTOOLCHAINS-59?redirect=false)** and commented
When using toolchains with Java versions 19 and later, some compiler error messages are not visible.
Example project:
`{}org/example/Empty.java{`}:
```java
package org.example;
public class Empty {
}
```
`{}pom.xml{`}:
```xml
4.0.0
org.example
compiler-message-test
1.0.0-SNAPSHOT
jar
UTF-8
19
org.apache.maven.plugins
maven-toolchains-plugin
3.2.0
toolchain
[${maven.compiler.release},)
org.apache.maven.plugins
maven-compiler-plugin
3.13.0
```
The empty `annotationProcessors` block causes an error (MCOMPILER-607), but the message is only visible with Java versions up to 18.
Output with `maven.compiler.release` set to 18:
> [INFO] — compiler:3.13.0:compile (default-compile) @ compiler-message-test —
> [INFO] Toolchain in maven-compiler-plugin: JDK[C:/Users/me/Programme/JDK/jdk-18.0.2.1]
> [INFO] Recompiling the module because of changed source code.
> [INFO] Compiling 1 source file with javac [forked debug release 18] to target\classes
> [INFO] -------------------------------------------------------------
> [ERROR] COMPILATION ERROR :
> [INFO] -------------------------------------------------------------
> [ERROR] error: Annotation processor '' not found
> [INFO] 1 error
> [INFO] -------------------------------------------------------------
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD FAILURE
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 1.962 s
> [INFO] Finished at: 2025-01-23T21:57:59+01:00
> [INFO] ------------------------------------------------------------------------
> [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project compiler-message-test: Compilation failure
> [ERROR] error: Annotation processor '' not found
> [ERROR]
> [ERROR] -> [Help 1]
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project compiler-message-test: Compilation failure
> error: Annotation processor '' not found
>
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
> at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
> at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
> at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
> at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
> at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
> at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
> at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke (Method.java:580)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
> at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
> at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
> Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
> error: Annotation processor '' not found
>
> at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:1309)
> at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:215)
> at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
> at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
> at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
> at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
> at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
> at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
> at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
> at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke (Method.java:580)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
> at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
> at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
> [ERROR]
> [ERROR] Re-run Maven using the -X switch to enable full debug logging.
> [ERROR]
> [ERROR] For more information about the errors and possible solutions, please read the following articles:
> [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Output with `maven.compiler.release` set to 19:
> [INFO] — compiler:3.13.0:compile (default-compile) @ compiler-message-test —
> [INFO] Toolchain in maven-compiler-plugin: JDK[C:/Users/me/Programme/JDK/jdk-19.0.2]
> [INFO] Recompiling the module because of changed source code.
> [INFO] Compiling 1 source file with javac [forked debug release 19] to target\classes
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD FAILURE
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 2.233 s
> [INFO] Finished at: 2025-01-23T21:59:33+01:00
> [INFO] ------------------------------------------------------------------------
> [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project compiler-message-test: Compilation failure -> [Help 1]
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project compiler-message-test: Compilation failure
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
> at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
> at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
> at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
> at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
> at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
> at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
> at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke (Method.java:580)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
> at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
> at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
> Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
> at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:1311)
> at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:215)
> at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
> at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
> at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
> at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
> at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
> at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
> at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
> at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke (Method.java:580)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
> at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
> at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
> [ERROR]
> [ERROR] Re-run Maven using the -X switch to enable full debug logging.
> [ERROR]
> [ERROR] For more information about the errors and possible solutions, please read the following articles:
> [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
As you can see, the essential message `error: Annotation processor '' not found` is only present with a toolchain Java version up to 18. If I remember correctly, this also affects messages emitted from annotation processors. Other compiler messages, for example syntax errors in Java source files, are not affected.
The bug goes away (the error message is shown) when I remove the `toolchain`:
> [INFO] --- compiler:3.13.0:compile (default-compile) @ compiler-message-test ---
> [INFO] Recompiling the module because of changed source code.
> [INFO] Compiling 1 source file with javac [debug release 19] to target\classes
> [INFO] -------------------------------------------------------------
> [ERROR] COMPILATION ERROR :
> [INFO] -------------------------------------------------------------
> [ERROR] Annotationsprozessor "" nicht gefunden
> [INFO] 1 error
> [INFO] -------------------------------------------------------------
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD FAILURE
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 1.378 s
> [INFO] Finished at: 2025-01-23T22:12:03+01:00
> [INFO] ------------------------------------------------------------------------
> [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project compiler-message-test: Compilation failure
> [ERROR] Annotationsprozessor "" nicht gefunden
> [ERROR]
> [ERROR] -> [Help 1]
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project compiler-message-test: Compilation failure
> Annotationsprozessor "" nicht gefunden
>
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
> at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
> at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
> at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
> at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
> at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
> at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
> at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke (Method.java:580)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
> at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
> at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
>
> Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
> Annotationsprozessor "" nicht gefunden
>
> at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:1309)
> at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:215)
> at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
> at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
> at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
> at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
> at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
> at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
> at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
> at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke (Method.java:580)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
> at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
> at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
>
> [ERROR]
> [ERROR] Re-run Maven using the -X switch to enable full debug logging.
> [ERROR]
> [ERROR] For more information about the errors and possible solutions, please read the following articles:
> [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
---
**Affects:** 3.2.0
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.