Repository navigation
Closed
Description
Maven 4 since some beta is using Sisu in strict mode (see https://issues.apache.org/jira/browse/MNG-8228). Still, this strictness is not complete.
Reproducer:
- create
.mvn/extensions.xmlwith following content
<?xml version="1.0" encoding="UTF-8"?>
<extensions>
<extension>
<groupId>eu.maveniverse.maven.mimir</groupId>
<artifactId>extension3</artifactId>
<version>0.3.5</version>
</extension>
</extensions>- use maven 4 rc-3 or alike with Java 17.
- explanation: Mimir 0.3.5 is Java 21 bytecode, but am using Maven 4 with Java 17.
Reproducer in action:
[cstamas@angeleyes mimir-test]$ cat .mvn/extensions.xml
<?xml version="1.0" encoding="UTF-8"?>
<extensions>
<extension>
<groupId>eu.maveniverse.maven.mimir</groupId>
<artifactId>extension3</artifactId>
<version>0.3.5</version>
</extension>
</extensions>
[cstamas@angeleyes mimir-test]$ mvn -v
Apache Maven 4.0.0-rc-4-SNAPSHOT (d80804c3b45be891b6ab2cd29f9a1e56c96d956a)
Maven home: /home/cstamas/Tools/maven/apache-maven-4.0.0-rc-4-SNAPSHOT
Java version: 17.0.14, vendor: Eclipse Adoptium, runtime: /home/cstamas/.sdkman/candidates/java/17.0.14-tem
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "6.13.5-200.fc41.x86_64", arch: "amd64", family: "unix"
[cstamas@angeleyes mimir-test]$ mvn validate
[INFO]
[INFO] 1 problem was encountered while building the effective settings (use -e to see details)
[INFO]
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------------------< org.apache.shiro.samples:samples-spring-boot-3-web >----------------------------------
[INFO] Building samples-spring-boot-3-web 2.0.0-SNAPSHOT
[INFO] from pom.xml
[INFO] ---------------------------------------------------------[ jar ]----------------------------------------------------------
[INFO] --------------------------------------------------------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] --------------------------------------------------------------------------------------------------------------------------
[INFO] Total time: 0.151 s
[INFO] Finished at: 2025-03-05T18:56:18+01:00
[INFO] --------------------------------------------------------------------------------------------------------------------------
[cstamas@angeleyes mimir-test]$
Mimir is not loaded, nor build failed. With -Dsisu.debug you can see:
[INFO] [stdout] DEBUG: Sisu - Problem scanning: jar:file:/home/cstamas/.m2/repository-oss/eu/maveniverse/maven/mimir/node/file/0.3.5/file-0.3.5.jar!/eu/maveniverse/maven/mimir/node/file/FileNodeFactory.class
[INFO] [stdout] java.lang.TypeNotPresentException: Type eu.maveniverse.maven.mimir.node.file.FileNodeFactory not present
[INFO] [stdout] at org.eclipse.sisu.space.URLClassSpace.loadClass(URLClassSpace.java:149)
[INFO] [stdout] at org.eclipse.sisu.space.QualifiedTypeVisitor.leaveClass(QualifiedTypeVisitor.java:136)
[INFO] [stdout] at org.eclipse.sisu.plexus.PlexusTypeVisitor.leaveClass(PlexusTypeVisitor.java:119)
[INFO] [stdout] at org.eclipse.sisu.space.SpaceScanner$1.visitEnd(SpaceScanner.java:219)
[INFO] [stdout] at org.objectweb.asm.ClassReader.accept(ClassReader.java:749)
[INFO] [stdout] at org.objectweb.asm.ClassReader.accept(ClassReader.java:425)
[INFO] [stdout] at org.eclipse.sisu.space.SpaceScanner.accept(SpaceScanner.java:143)
[INFO] [stdout] at org.eclipse.sisu.space.SpaceScanner.accept(SpaceScanner.java:109)
[INFO] [stdout] at org.eclipse.sisu.space.SpaceModule.scanForElements(SpaceModule.java:218)
[INFO] [stdout] at org.eclipse.sisu.space.SpaceModule.configure(SpaceModule.java:168)
[INFO] [stdout] at org.eclipse.sisu.plexus.PlexusAnnotatedBeanModule.configure(PlexusAnnotatedBeanModule.java:119)
[INFO] [stdout] at org.eclipse.sisu.plexus.PlexusBindingModule.configure(PlexusBindingModule.java:65)
[INFO] [stdout] at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:426)
[INFO] [stdout] at com.google.inject.spi.Elements.getElements(Elements.java:113)
[INFO] [stdout] at com.google.inject.spi.Elements.getElements(Elements.java:106)
[INFO] [stdout] at org.eclipse.sisu.wire.WireModule.configure(WireModule.java:77)
[INFO] [stdout] at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:426)
[INFO] [stdout] at com.google.inject.spi.Elements.getElements(Elements.java:113)
[INFO] [stdout] at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:160)
[INFO] [stdout] at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
[INFO] [stdout] at com.google.inject.Guice.createInjector(Guice.java:87)
[INFO] [stdout] at com.google.inject.Guice.createInjector(Guice.java:69)
[INFO] [stdout] at com.google.inject.Guice.createInjector(Guice.java:59)
[INFO] [stdout] at org.codehaus.plexus.DefaultPlexusContainer.addPlexusInjector(DefaultPlexusContainer.java:483)
[INFO] [stdout] at org.codehaus.plexus.DefaultPlexusContainer.discoverComponents(DefaultPlexusContainer.java:462)
[INFO] [stdout] at org.apache.maven.cling.invoker.PlexusContainerCapsuleFactory.container(PlexusContainerCapsuleFactory.java:117)
[INFO] [stdout] at org.apache.maven.cling.invoker.PlexusContainerCapsuleFactory.createContainerCapsule(PlexusContainerCapsuleFactory.java:74)
[INFO] [stdout] at org.apache.maven.cling.invoker.LookupInvoker.container(LookupInvoker.java:506)
[INFO] [stdout] at org.apache.maven.cling.invoker.LookupInvoker.doInvoke(LookupInvoker.java:158)
[INFO] [stdout] at org.apache.maven.cling.invoker.LookupInvoker.invoke(LookupInvoker.java:135)
[INFO] [stdout] at org.apache.maven.cling.ClingSupport.run(ClingSupport.java:76)
[INFO] [stdout] at org.apache.maven.cling.MavenCling.main(MavenCling.java:51)
[INFO] [stdout] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[INFO] [stdout] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[INFO] [stdout] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[INFO] [stdout] at java.base/java.lang.reflect.Method.invoke(Method.java:569)
[INFO] [stdout] at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:255)
[INFO] [stdout] at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:201)
[INFO] [stdout] at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:361)
[INFO] [stdout] at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:314)
[INFO] [stdout] Caused by: java.lang.UnsupportedClassVersionError: eu/maveniverse/maven/mimir/node/file/FileNodeFactory has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0
[INFO] [stdout] at java.base/java.lang.ClassLoader.defineClass1(Native Method)
[INFO] [stdout] at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
[INFO] [stdout] at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
[INFO] [stdout] at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
[INFO] [stdout] at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
[INFO] [stdout] at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
[INFO] [stdout] at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
[INFO] [stdout] at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
[INFO] [stdout] at org.codehaus.plexus.classworlds.realm.ClassRealm.findClassInternal(ClassRealm.java:256)
[INFO] [stdout] at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:351)
[INFO] [stdout] at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:36)
[INFO] [stdout] at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:225)
[INFO] [stdout] at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:210)
[INFO] [stdout] at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:205)
[INFO] [stdout] at org.eclipse.sisu.space.URLClassSpace.loadClass(URLClassSpace.java:141)
[INFO] [stdout] ... 39 more
Metadata
Metadata
Assignees
Labels
No labels
Activity
kwin commentedon Mar 5, 2025
In
sisu-project/org.eclipse.sisu.inject/src/main/java/org/eclipse/sisu/space/SpaceScanner.java
Line 145 in 8ea80a1
RuntimeExceptionandIOException. TheUnsupportedClassVersionErroris not one of those and therefore not wrapped. I am wondering who is catching that throwable? AFAIK it is not caught inside Sisu....Update: Actually
UnsupportedClassVersionErroris always wrapped in aTypeNotPresentException(which is a runtime exception) insisu-project/org.eclipse.sisu.inject/src/main/java/org/eclipse/sisu/space/URLClassSpace.java
Lines 143 to 150 in 8ea80a1
kwin commentedon Mar 5, 2025
This probably needs to be more strict in Plexus: https://github.com/eclipse-sisu/sisu-project/blob/8ea80a1289fe8efa8d8a95e3991c5bbf2c8f4bd6/org.eclipse.sisu.plexus/src/main/java/org/codehaus/plexus/DefaultPlexusContainer.java#L467C13-L467C22 but this isn't the culprit here...
kwin commentedon Mar 5, 2025
I think the issue is in Maven: https://github.com/apache/maven/blob/0710deb4fd9b132183597dbaed9734eeff621fa1/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/PlexusContainerCapsuleFactory.java#L125
cstamas commentedon Mar 5, 2025
Nope, is not Maven as we debugged. Simply the "strict" is
falsedespite being set totrue.Pass strict flag also via "discoverComponents"