cbarlin opened a new issue, #1039: URL: https://github.com/apache/maven-compiler-plugin/issues/1039
### Affected version 4.0.0-rc-5 ### Bug description Not sure if this is a bug in the compiler plugin or in `javac`, but if you have a dependency that is marked with a type of `modular-processor` and it depends on a module that you also depend on (as in, type `modular-jar`), then `javac` throws an `java.lang.module.FindException`. Using my (admittedly quite large, sorry) project as an example you can [see here](https://github.com/cbarlin/advanced-record-utils/blob/maven_4/aru-processor-core/pom.xml#L71) I've declared my dependencies like so: ```xml <dependency> <groupId>io.avaje</groupId> <artifactId>avaje-inject</artifactId> <version>${avaje-inject.version}</version> <type>modular-jar</type> </dependency> <dependency> <groupId>io.avaje</groupId> <artifactId>avaje-inject-generator</artifactId> <version>${avaje-inject.version}</version> <type>modular-processor</type> </dependency> ``` (note: `avaje-inject-generator` itself depends on `avaje-inject`). When running `mvn compile` though, the below stack trace occurs: <details> <summary>Stack trace</summary> ``` [INFO] --- compiler:4.0.0-beta-4:compile (default-compile) @ aru-processor-core --- [WARNING] Parameter 'debug' (user property 'maven.compiler.debug') is deprecated: Setting this flag to false is replaced by <debuglevel>none</debuglevel>. [INFO] Compiling all files. [INFO] [ERROR] An exception has occurred in the compiler (25). Please file a bug against the Java compiler via the Java bug reporting page (https://bugreport.java.com) after checking the Bug Database (https://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you. java.lang.module.FindException: Module io.avaje.inject not found, required by io.avaje.inject.generator at java.base/java.lang.module.Resolver.findFail(Resolver.java:921) at java.base/java.lang.module.Resolver.resolve(Resolver.java:192) at java.base/java.lang.module.Resolver.bind(Resolver.java:315) at java.base/java.lang.module.Resolver.bind(Resolver.java:219) at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:543) at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:347) at jdk.compiler/com.sun.tools.javac.file.JavacFileManager.getServiceLoader(JavacFileManager.java:1169) at jdk.compiler/com.sun.tools.javac.main.DelegatingJavaFileManager.getServiceLoader(DelegatingJavaFileManager.java:169) at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.initProcessorLoader(JavacProcessingEnvironment.java:270) at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.<init>(JavacProcessingEnvironment.java:240) at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.instance(JavacProcessingEnvironment.java:195) at jdk.compiler/com.sun.tools.javac.api.BasicJavacTask.initPlugins(BasicJavacTask.java:218) at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.prepareCompiler(JavacTaskImpl.java:204) at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:101) at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152) 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.apache.maven.plugin.compiler.ToolExecutor.compile(ToolExecutor.java:968) at org.apache.maven.plugin.compiler.AbstractCompilerMojo.compile(AbstractCompilerMojo.java:1381) at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1190) at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:198) at org.apache.maven.plugin.DefaultBuildPluginManager$MojoWrapper.execute(DefaultBuildPluginManager.java:244) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:339) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:310) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:214) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:179) at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:168) at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:165) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:110) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:61) at org.apache.maven.lifecycle.internal.DefaultLifecycleStarter.execute(DefaultLifecycleStarter.java:123) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:310) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:225) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:149) at org.apache.maven.cling.invoker.mvn.MavenInvoker.doExecute(MavenInvoker.java:452) at org.apache.maven.cling.invoker.mvn.MavenInvoker.execute(MavenInvoker.java:97) at org.apache.maven.cling.invoker.mvn.MavenInvoker.execute(MavenInvoker.java:81) at org.apache.maven.cling.invoker.LookupInvoker.doInvoke(LookupInvoker.java:165) at org.apache.maven.cling.invoker.LookupInvoker.invoke(LookupInvoker.java:134) at org.apache.maven.cling.ClingSupport.run(ClingSupport.java:76) at org.apache.maven.cling.MavenCling.main(MavenCling.java:51) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:565) 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] COMPILATION ERROR: Cannot compile io.github.cbarlin:aru-processor-core:jar:0.8.2-SNAPSHOT main classes. [INFO] For trying to compile from the command-line, use: cd aru-processor-core javac @target/javac.args ``` </details> Looking at the javac args that are given, it seems that `avaje-inject-generator` is included in `--processor-module-path` and `avaje-inject` is included in `--module-path` <details> <summary>Resulting javac args</summary> ``` --release 21 -proc:full -g:none --module-version 0.8.2-SNAPSHOT --module-path "/home/conrad/.m2/repository/org/jspecify/jspecify/1.0.0/jspecify-1.0.0.jar:../advanced-record-utils-annotations/target/classes:../aru-prism-prison/target/classes:/home/conrad/.m2/repository/io/micronaut/sourcegen/micronaut-sourcegen-generator-java/1.8.4/micronaut-sourcegen-generator-java-1.8.4.jar:/home/conrad/.m2/repository/org/apache/commons/commons-lang3/3.20.0/commons-lang3-3.20.0.jar:/home/conrad/.m2/repository/com/github/ben-manes/caffeine/caffeine/3.2.3/caffeine-3.2.3.jar:/home/conrad/.m2/repository/io/avaje/avaje-inject/12.4/avaje-inject-12.4.jar:/home/conrad/.m2/repository/com/google/errorprone/error_prone_annotations/2.43.0/error_prone_annotations-2.43.0.jar:/home/conrad/.m2/repository/jakarta/inject/jakarta.inject-api/2.0.1/jakarta.inject-api-2.0.1.jar:/home/conrad/.m2/repository/io/avaje/avaje-inject-aop/12.4/avaje-inject-aop-12.4.jar:/home/conrad/.m2/repository/io/avaje/avaje-applog/1.2/avaje-applog-1.2.jar:/home/conrad/.m2/repository/io/avaje/avaje-inj ect-events/12.4/avaje-inject-events-12.4.jar:/home/conrad/.m2/repository/io/avaje/avaje-prism-core/2.0/avaje-prism-core-2.0.jar:/home/conrad/.m2/repository/io/avaje/avaje-spi-core/2.16/avaje-spi-core-2.16.jar" --processor-module-path "/home/conrad/.m2/repository/io/avaje/avaje-inject-generator/12.4/avaje-inject-generator-12.4.jar:/home/conrad/.m2/repository/io/avaje/avaje-prisms/2.0/avaje-prisms-2.0.jar:/home/conrad/.m2/repository/io/avaje/avaje-spi-service/2.16/avaje-spi-service-2.16.jar" --source-path "src/main/java" -d "target/classes" "src/main/java/io/github/cbarlin/aru/core/ClaimableOperation.java" "src/main/java/io/github/cbarlin/aru/core/ExecutableElementUtils.java" "src/main/java/io/github/cbarlin/aru/core/analysers/ImportAnalyser.java" "src/main/java/io/github/cbarlin/aru/core/analysers/PackageTargetAnalyser.java" "src/main/java/io/github/cbarlin/aru/core/analysers/TargetAnalyser.java" "src/main/java/io/github/cbarlin/aru/core/analysers/TargetAnalysisResult.java" "src/main/java/io/github/cbarlin/aru/core/analysers/RecordTargetAnalyser.java" "src/main/java/io/github/cbarlin/aru/core/analysers/ConcreteTargetAnalyser.java" "src/main/java/io/github/cbarlin/aru/core/analysers/InterfaceTargetAnalyser.java" "src/main/java/io/github/cbarlin/aru/core/analysers/LibraryLoadedTargetAnalyser.java" "src/main/java/io/github/cbarlin/aru/core/analysers/TypeConverterAnalyser.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/BuilderClass.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/UtilsClass.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/sorting/AnnotationSpecComparator.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/sorting/FieldSpecComparator.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/sorting/TypeNameComparator.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/sorting/MethodSpecComparator.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/sorting/TypeSpecComparator.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/ToBeBuilt.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/GenerationArtifact.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/IToBeBuilt.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/PreBuilt.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/ToBeBuiltClass.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/ToBeBuiltInterface.java" "src/main/java/io/github/cbarlin/aru/core/artifacts/ToBeBuiltRecord.java" "src/main/java/io/github/cbarlin/aru/core/factories/BeanScopeFactory.java" "src/main/java/io/github/cbarlin/aru/core/factories/InterfaceElementPrismFactory.java" "src/main/java/io/github/cbarlin/aru/core/factories/RecordComponentPrismFactory.java" "src/main/java/io/github/cbarlin/aru/core/factories/RecordElementPrismFactory.java" "src/main/java/io/github/cbarlin/aru/core/factories/SupportedAnnotations.java" "src/main/java/io/github/cbarlin/aru/core/factories/SupportedAnnotationsFactory.java" "src/main/java/io/github/cbarlin/aru/core/factories/PropertyConfigLoader.java" "src/main/java/io/github/cbarlin/aru/core/factories/UseInterfaceDefaultClassFactory.java" "src/main/java/io/github/cbarlin/aru/core/impl/ScopeHolder.java" "src/main/java/io/github/cbarlin/aru/core/impl/logging/NoOpAppLog.java" "src/main/java/io/github/cbarlin/aru/core/impl/logging/NoOpHandler.java" "src/main/java/io/github/cbarlin/aru/core/impl/logging/NoOpLogger.java" "src/main/java/io/github/cbarlin/aru/core/impl/types/analyser/BasicAnalyser.java" "src/main/java/io/github/cbarlin/aru/core/impl/types/analyser/CoreSpecialisedComponentFactory.java" "src/main/java/io/github/cbarlin/aru/core/impl/visitors/BuilderClassCreatorVisitor.java" "src/main/java/io/github/cbarlin/aru/core/impl/visitors/InterfaceUtilsJavadocVisitor.java" "src/main/java/io/github/cbarlin/aru/core/impl/visitors/builder/AddEmptyConstruction.java" "src/main/java/io/github/cbarlin/aru/core/impl/visitors/builder/AddCopyConstruction.java" "src/main/java/io/github/cbarlin/aru/core/impl/visitors/builder/AddGetter.java" "src/main/java/io/github/cbarlin/aru/core/impl/visitors/builder/AddField.java" "src/main/java/io/github/cbarlin/aru/core/impl/visitors/builder/AddPlainBuild.java" "src/main/java/io/github/cbarlin/aru/core/impl/visitors/builder/AddSetter.java" "src/main/java/io/github/cbarlin/aru/core/mirrorhandlers/MergedMirror.java" "src/main/java/io/github/cbarlin/aru/core/mirrorhandlers/SyntheticAnnotationValue.java" "src/main/java/io/github/cbarlin/aru/core/mirrorhandlers/SourceTrackingAnnotationMirror.java" "src/main/java/io/github/cbarlin/aru/core/mirrorhandlers/StackingAnnotationMirror.java" "src/main/java/io/github/cbarlin/aru/core/mirrorhandlers/MirrorOfDefaults.java" "src/main/java/io/github/cbarlin/aru/core/mirrorhandlers/MapBasedAnnotationMirror.java" "src/main/java/io/github/cbarlin/aru/core/mirrorhandlers/ToPrettierAnnotationSpec.java" "src/main/java/io/github/cbarlin/aru/core/types/OperationType.java" "src/main/java/io/github/cbarlin/aru/core/types/components/ConstructorComponent.java" "src/main/java/io/github/cbarlin/aru/core/types/components/OptionalComponent.java" "src/main/java/io/github/cbarlin/aru/core/types/components/TypeConverterComponent.java" "src/main/java/io/github/cbarlin/aru/core/types/components/BasicAnalysedComponent.java" "src/main/java/io/github/cbarlin/aru/core/types/components/DelegatingComponent.java" "src/main/java/io/github/cbarlin/aru/core/types/components/AnalysedCollectionComponent.java" "src/main/java/io/github/cbarlin/aru/core/types/components/AnalysedOptionalComponent.java" "src/main/java/io/github/cbarlin/aru/core/types/AnalysedInterface.java" "src/main/java/io/github/cbarlin/aru/core/types/AnalysedComponent.java" "src/main/java/io/github/cbarlin/aru/core/types/AnalysedRecord.java" "src/main/java/io/github/cbarlin/aru/core/types/AnalysedTypeConverter.java" "src/main/java/io/github/cbarlin/aru/core/types/LibraryLoadedTarget.java" "src/main/java/io/github/cbarlin/aru/core/types/ProcessingTarget.java" "src/main/java/io/github/cbarlin/aru/core/types/UseInterfaceDefaultClass.java" "src/main/java/io/github/cbarlin/aru/core/types/AnalysedType.java" "src/main/java/io/github/cbarlin/aru/core/visitors/InterfaceVisitor.java" "src/main/java/io/github/cbarlin/aru/core/visitors/RecordVisitor.java" "src/main/java/io/github/cbarlin/aru/core/visitors/AruVisitor.java" "src/main/java/io/github/cbarlin/aru/core/visitors/CollectionRecordVisitor.java" "src/main/java/io/github/cbarlin/aru/core/wiring/CoreGlobalScope.java" "src/main/java/io/github/cbarlin/aru/core/wiring/CorePerComponentScope.java" "src/main/java/io/github/cbarlin/aru/core/wiring/CorePerInterfaceScope.java" "src/main/java/io/github/cbarlin/aru/core/wiring/CorePerRecordScope.java" "src/main/java/io/github/cbarlin/aru/core/wiring/InjectModuleFinder.java" "src/main/java/io/github/cbarlin/aru/core/CommonsConstants.java" "src/main/java/io/github/cbarlin/aru/core/AdvRecUtilsProcessor.java" "src/main/java/io/github/cbarlin/aru/core/AdvRecUtilsSettings.java" "src/main/java/io/github/cbarlin/aru/core/AnnotationSupplier.java" "src/main/java/io/github/cbarlin/aru/core/PreviousCompilationChecker.java" "src/main/java/io/github/cbarlin/aru/core/TypeElementUtils.java" "src/main/java/io/github/cbarlin/aru/core/UtilsProcessingContext.java" "src/main/java/io/github/cbarlin/aru/core/OptionalClassDetector.java" "src/main/java/module-info.java" ``` </details> Fiddling around with the arguments, if I copy (not move) the transitive depencies of `avaje-inject-generator` across to the `--processor-module-path` it does seem to move along (in that I get a different error saying that a generated class can't be found - that might be me never having used `javac` directly though). I'm guessing that the plugin needs to ensure transitive dependencies always end up in the `processor-module-path` even if they are already in the `module-path`? Though to me that seems redundant... Thanks for all the work you guys do - it's really appreciated! -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
