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]

Reply via email to