Re: Error in Java 25
Jochen Theodorou <[email protected]> Fri, 10 Oct 2025 17:36:02 +0200
| Newsgroups | gmane.comp.lang.groovy.user |
|---|---|
| Message-ID | <[email protected]> |
The problem is the following: * we read classfiles * they have a bytecode version, that depends on the version of Java,=20 those classfiles have been compiled with * we use the asm lib to read those class files * asm can only read classfiles compatible with the bytecode version on=20 the release of that asm lib * Java nowadays changes the bytecode version with almost every major relea= se * if the bytecode version is too new you run into problems like: >> Caused by: java.lang.IllegalArgumentException: Unsupported class >> file major version 69 >> at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:200) One thing that helps: upgrade Groovy. There is in theory a solution to this by using the new class file API=20 from Java. But the next lts version of Java that supports the class file= =20 API is Java 25 bye Jochen On 10/10/25 16:15, Tommy Svensson wrote: > Sorry, but I don't have anything to say about the specific problem! >=20 > That said I found this: https://openjdk.org <https://openjdk.org> >=20 > Is it possible the open source world can take this JVM code and take it= =20 > in an own, fully backwards compatible direction, so that we can avoid=20 > problems like this ? >=20 > Tommy Svensson >=20 > [email protected] <mailto:[email protected]> >=20 >=20 >=20 >=20 > Fr=C3=A5n: Blake McBride <[email protected]> <mailto:[email protected]= om> > Svara: users-GSC0n/0aZo1d/SJB6HiN2Ni2O/[email protected] <users-GSC0n/0aZo1d/SJB6HiN2Ni2O/[email protected]>=20 > <mailto:users-GSC0n/0aZo1d/SJB6HiN2Ni2O/[email protected]> > Datum: 10 oktober 2025 at 01:26:18 > Till: users-GSC0n/0aZo1d/SJB6HiN2Ni2O/[email protected] <users-GSC0n/0aZo1d/SJB6HiN2Ni2O/[email protected]>=20 > <mailto:users-GSC0n/0aZo1d/SJB6HiN2Ni2O/[email protected]> > =C3=84mne: Re: Error in Java 25 >=20 >> I fixed the problem by upgrading to Groovy 4.0.28 >> >> On Thu, Oct 9, 2025 at 4:45=E2=80=AFPM Blake McBride <[email protected]= om=20 >> <mailto:[email protected]>> wrote: >> >> Hello, >> >> I am trying to run an app that runs fine under Java 21 but will >> not run under Java 25. >> The problem appears to be Groovy. >> >> Sure appreciate any help. >> >> >> I am running the following: >> >> Groovy: =C2=A04.0.26 >> Java: =C2=A025 >> Apache tomcat: 11.0.8 >> >> I get the error when trying to run a .groovy file.=C2=A0 So, it isn= 't >> a .class file.=C2=A0 The Groovy file has not been compiled.=C2=A0 A= gain, >> this code works fine under Java 8, 11, 17, and 21. >> >> The error under Java 25: >> >> 09-Oct-2025 16:27:47.947 SEVERE [main] >> org.apache.catalina.core.StandardContext.listenerStart Exception >> sending context initialized event to listener instance of class >> [org.kissweb.restServer.StartupListener] >> BUG! exception in phase 'semantic analysis' in source unit '/ >> drive1/ROOT/home/blake/Stack360/Kiss/src/main/backend/ >> KissInit.groovy' Unsupported class file major version 69 >> at >> org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.do= PhaseOperation(CompilationUnit.java:901) >> at >> org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(= CompilationUnit.java:692) >> at >> org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit= .java:666) >> at >> groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:3= 65) >> at >> groovy.lang.GroovyClassLoader.lambda$parseClass$2(GroovyClassLoader= .java:314) >> at >> org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(Stam= pedCommonCache.java:163) >> at >> org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(St= ampedCommonCache.java:154) >> at >> groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314= ) >> at org.kissweb.restServer.GroovyClass.<init>(GroovyClass.java:59) >> at >> org.kissweb.restServer.GroovyService.loadGroovyClass(GroovyService.= java:400) >> at >> org.kissweb.restServer.GroovyService.internalGroovy(GroovyService.j= ava:265) >> at >> org.kissweb.restServer.MainServlet.initializeSystem(MainServlet.jav= a:352) >> at >> org.kissweb.restServer.StartupListener.contextInitialized(StartupLi= stener.java:37) >> at >> org.apache.catalina.core.StandardContext.listenerStart(StandardCont= ext.java:4015) >> at >> org.apache.catalina.core.StandardContext.startInternal(StandardCont= ext.java:4438) >> at >> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164= ) >> at >> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:= 566) >> at >> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:65= 2) >> at >> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:92= 6) >> at >> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.jav= a:1842) >> at java.base/ >> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:= 545) >> at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:32= 8) >> at >> org.apache.tomcat.util.threads.InlineExecutorService.execute(Inline= ExecutorService.java:75) >> at java.base/ >> java.util.concurrent.AbstractExecutorService.submit(AbstractExecuto= rService.java:125) >> at >> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:7= 30) >> at >> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:3= 81) >> at org.apache.catalina.startup.HostConfig.start(HostConfig.java:158= 2) >> at >> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.ja= va:265) >> at >> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(Lifecycle= Base.java:109) >> at >> org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBa= se.java:389) >> at >> org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:= 336) >> at >> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.= java:743) >> at >> org.apache.catalina.core.StandardHost.startInternal(StandardHost.ja= va:769) >> at >> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164= ) >> at >> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBas= e.java:1164) >> at >> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBas= e.java:1160) >> at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:32= 8) >> at >> org.apache.tomcat.util.threads.InlineExecutorService.execute(Inline= ExecutorService.java:75) >> at java.base/ >> java.util.concurrent.AbstractExecutorService.submit(AbstractExecuto= rService.java:149) >> at >> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.= java:716) >> at >> org.apache.catalina.core.StandardEngine.startInternal(StandardEngin= e.java:203) >> at >> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164= ) >> at >> org.apache.catalina.core.StandardService.startInternal(StandardServ= ice.java:412) >> at >> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164= ) >> at >> org.apache.catalina.core.StandardServer.startInternal(StandardServe= r.java:866) >> at >> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164= ) >> at org.apache.catalina.startup.Catalina.start(Catalina.java:759) >> at java.base/ >> jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethod= HandleAccessor.java:104) >> at java.base/java.lang.reflect.Method.invoke(Method.java:565) >> at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342) >> at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473) >> Caused by: java.lang.IllegalArgumentException: Unsupported class >> file major version 69 >> at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:200) >> at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:180) >> at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:166) >> at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:288) >> at >> org.codehaus.groovy.ast.decompiled.AsmDecompiler.parseClass(AsmDeco= mpiler.java:83) >> at >> org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassN= odeResolver.java:255) >> at >> org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScr= ipt(ClassNodeResolver.java:193) >> at >> org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNo= deResolver.java:175) >> at >> org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNode= Resolver.java:129) >> at >> org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVi= sitor.java:782) >> at >> org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.j= ava:423) >> at >> org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisito= r.java:1240) >> at >> org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVi= sitor.java:258) >> at >> org.codehaus.groovy.control.CompilationUnit.lambda$addPhaseOperatio= ns$3(CompilationUnit.java:207) >> at >> org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.do= PhaseOperation(CompilationUnit.java:897) >> ... 50 more >>