Skip to content

modulith service breaks for projects using JDK25 #1699

@martinlippert

Description

@martinlippert

Modulith service fails to read metadata from project in case the project is configured to use JDK 25.

10:28:40.855 [pool-10-thread-4] ERROR o.s.i.v.b.modulith.ModulithService - Failed to generate modulith metadata for project 'restbucks'. Modulith Exporter process exited with code 1
Exception in thread "main" java.lang.IllegalArgumentException: Unresolvable class definition for class [de.odrotbohm.restbucks.Restbucks]
	at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:350)
	at org.springframework.modulith.core.ModulithMetadata.of(ModulithMetadata.java:85)
	at org.springframework.modulith.core.ApplicationModules$CacheKey.lambda$of$0(ApplicationModules.java:773)
	at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:104)
	at org.springframework.modulith.core.ApplicationModules$CacheKey.getMetadata(ApplicationModules.java:785)
	at org.springframework.modulith.core.ApplicationModules.lambda$of$21(ApplicationModules.java:695)
	at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
	at org.springframework.modulith.core.ApplicationModules.of(ApplicationModules.java:693)
	at org.springframework.modulith.core.ApplicationModules.of(ApplicationModules.java:271)
	at org.springframework.modulith.core.ApplicationModules.of(ApplicationModules.java:256)
	at org.springframework.modulith.core.util.ApplicationModulesExporter.main(ApplicationModulesExporter.java:97)
Caused by: java.lang.UnsupportedClassVersionError: de/odrotbohm/restbucks/Restbucks has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 65.0
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:534)
	at java.base/java.lang.Class.forName(Class.java:513)
	at org.springframework.util.ClassUtils.forName(ClassUtils.java:302)
	at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:343)

This is most likely related to the JDK that is being used to run the app (the module exporter), most likely not the JDK that is used to compile the project against.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions