Java 21 supported?

2,183 views
Skip to first unread message

Ulrik Lejon

unread,
Sep 26, 2023, 5:12:41 AM9/26/23
to JaCoCo and EclEmma Users
Hi,

According to https://www.jacoco.org/jacoco/trunk/doc/changes.html Release 0.8.9 includes experimental support for Java 21 class files. 
I just tried using version 0,8.10 of the 
jacoco-maven-plugin in my project but getting an error (Unsupported class file major version 65).

How do I use the experimental support for Java 21?

Marc Hoffmann

unread,
Sep 26, 2023, 6:18:44 AM9/26/23
to JaCoCo and EclEmma Users
Hi,

please provide the full stack trace of the error (run Maven with -X).

Thanks,
-marc

--
You received this message because you are subscribed to the Google Groups "JaCoCo and EclEmma Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jacoco+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jacoco/d7d06663-1842-42f2-85d7-198deb1dac7fn%40googlegroups.com.

Ulrik Lejon

unread,
Sep 26, 2023, 6:25:54 AM9/26/23
to JaCoCo and EclEmma Users
Hi,

Here is the full stack trace:

[INFO] diff content saved to '/code/target/site/diff.patch'
[DEBUG] Loading exec data /code/target/jacoco-merged
[DEBUG] Found modified file: b/.githooks
[DEBUG] Found modified file: /dev/null
[DEBUG] Found modified file: b/Jenkinsfile
[DEBUG] Found modified file: b/pom.xml
[DEBUG] File b/.githooks has 2 modified lines
[DEBUG] File b/Jenkinsfile has 1 modified lines
[DEBUG] File b/pom.xml has 10 modified lines
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  6.826 s
[INFO] Finished at: 2023-09-26T12:22:55+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Error while analyzing /code/target/classes/Role.class. Unsupported class file major version 65
java.io.IOException: Error while analyzing /code/target/classes/Role.class.
    at org.jacoco.core.internal.analysis.FilteringAnalyzer.analyzerError (FilteringAnalyzer.kt:89)
    at org.jacoco.core.internal.analysis.FilteringAnalyzer.analyzeClass (FilteringAnalyzer.kt:28)
    at org.jacoco.core.analysis.Analyzer.analyzeClass (Analyzer.java:158)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:195)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:228)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:223)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:223)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:223)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:223)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:223)
    at com.form.coverage.report.ReportGenerator.analyzeStructure (ReportGenerator.kt:81)
    at com.form.coverage.report.ReportGenerator.create (ReportGenerator.kt:55)
    at com.form.coverage.report.ReportGenerator.create (ReportGenerator.kt:37)
    at com.github.surpsg.DiffCoverageMojo.execute (DiffCoverageMojo.kt:62)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 65
    at org.objectweb.asm.ClassReader.<init> (ClassReader.java:199)
    at org.objectweb.asm.ClassReader.<init> (ClassReader.java:180)
    at org.objectweb.asm.ClassReader.<init> (ClassReader.java:166)
    at org.jacoco.core.internal.instr.InstrSupport.classReaderFor (InstrSupport.java:280)
    at org.jacoco.core.internal.analysis.FilteringAnalyzer.analyzeClass (FilteringAnalyzer.kt:34)
    at org.jacoco.core.internal.analysis.FilteringAnalyzer.analyzeClass (FilteringAnalyzer.kt:26)
    at org.jacoco.core.analysis.Analyzer.analyzeClass (Analyzer.java:158)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:195)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:228)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:223)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:223)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:223)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:223)
    at org.jacoco.core.analysis.Analyzer.analyzeAll (Analyzer.java:223)
    at com.form.coverage.report.ReportGenerator.analyzeStructure (ReportGenerator.kt:81)
    at com.form.coverage.report.ReportGenerator.create (ReportGenerator.kt:55)
    at com.form.coverage.report.ReportGenerator.create (ReportGenerator.kt:37)
    at com.github.surpsg.DiffCoverageMojo.execute (DiffCoverageMojo.kt:62)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)

Ulrik Lejon

unread,
Sep 26, 2023, 8:22:32 AM9/26/23
to JaCoCo and EclEmma Users
Might have been premature to post this question here, since I use JaCoCo via a third party maven plugin. Looks like that plugin needs to update to JaCoCo 0.8.10.

Cheers
Ulrik

Marc Hoffmann

unread,
Sep 26, 2023, 12:47:32 PM9/26/23
to jac...@googlegroups.com
Hi,

this indicates you’re actually using a JaCoCo version older than 0.8.8. Since 0.8.8 we print the JaCoCo version with the exception message (which is missing in your stack trace).

For Java 21 support you need at least 0.8.9.

Regards,
-marc

Reply all
Reply to author
Forward
0 new messages