Skip to content

Support JDK 24 #1858

@danishnawab

Description

@danishnawab

Scenario

  • JaCoCo version: 0.8.12
  • Operating system: macOS 15.3.2
  • Tool integration: Gradle 8.13
  • Description of your use case: JaCoCo fails to analyze Java 24 class files (Unsupported class file major version 68)

Current Behaviour

When executing gradle clean build on a project using Java 24, JaCoCo logs the following exceptions:

Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 68
        at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:200)
        at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:180)
        at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:166)
        at org.jacoco.agent.rt.internal_aeaf9ab.core.internal.instr.InstrSupport.classReaderFor(InstrSupport.java:280)
        at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:77)
        at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:109)
        ... 33 more
Expand for full stack trace
java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo with JaCoCo 0.8.12.202403310830/dbfb6f2.
      at org.jacoco.agent.rt.internal_aeaf9ab.CoverageTransformer.transform(CoverageTransformer.java:94)
      at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:257)
      at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
      at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:594)
      at java.base/java.lang.ClassLoader.defineClass2(Native Method)
      at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1052)
      at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:164)
      at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:735)
      at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:678)
      at java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:560)
      at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:602)
      at java.base/java.lang.Class.forName(Class.java:595)
      at java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:755)
      at java.base/java.util.ServiceLoader$ModuleServicesLookupIterator.hasNext(ServiceLoader.java:955)
      at java.base/java.util.ServiceLoader$1.hasNext(ServiceLoader.java:1164)
      at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1246)
      at java.base/sun.util.cldr.CLDRLocaleProviderAdapter.<init>(CLDRLocaleProviderAdapter.java:75)
      at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
      at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
      at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
      at java.base/sun.util.locale.provider.LocaleProviderAdapter.forType(LocaleProviderAdapter.java:181)
      at java.base/sun.util.locale.provider.LocaleProviderAdapter.findAdapter(LocaleProviderAdapter.java:280)
      at java.base/sun.util.locale.provider.LocaleProviderAdapter.getAdapter(LocaleProviderAdapter.java:251)
      at java.base/java.util.Calendar.createCalendar(Calendar.java:1692)
      at java.base/java.util.Calendar.getInstance(Calendar.java:1659)
      at java.base/java.text.SimpleDateFormat.initializeCalendar(SimpleDateFormat.java:680)
      at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:624)
      at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:603)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.getLastResortErrorLogFile(SystemApplicationClassLoaderWorker.java:137)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:105)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
      at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
      at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by: java.io.IOException: Error while instrumenting sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo with JaCoCo 0.8.12.202403310830/dbfb6f2.
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrumentError(Instrumenter.java:161)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:111)
      at org.jacoco.agent.rt.internal_aeaf9ab.CoverageTransformer.transform(CoverageTransformer.java:92)
      ... 32 more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 68
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:200)
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:180)
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:166)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.internal.instr.InstrSupport.classReaderFor(InstrSupport.java:280)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:77)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:109)
      ... 33 more
java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/util/resources/provider/LocaleDataProvider with JaCoCo 0.8.12.202403310830/dbfb6f2.
      at org.jacoco.agent.rt.internal_aeaf9ab.CoverageTransformer.transform(CoverageTransformer.java:94)
      at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:257)
      at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
      at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:594)
      at java.base/java.lang.ClassLoader.defineClass2(Native Method)
      at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1052)
      at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:164)
      at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:735)
      at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:678)
      at java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:560)
      at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:602)
      at java.base/java.lang.Class.forName(Class.java:595)
      at java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:755)
      at java.base/java.util.ServiceLoader$ModuleServicesLookupIterator.hasNext(ServiceLoader.java:955)
      at java.base/java.util.ServiceLoader$1.hasNext(ServiceLoader.java:1164)
      at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1246)
      at java.base/sun.util.resources.Bundles.loadBundleFromProviders(Bundles.java:261)
      at java.base/sun.util.resources.Bundles.findBundleOf(Bundles.java:199)
      at java.base/sun.util.resources.Bundles.findBundleOf(Bundles.java:158)
      at java.base/sun.util.resources.Bundles.findBundleOf(Bundles.java:158)
      at java.base/sun.util.resources.Bundles.loadBundleOf(Bundles.java:143)
      at java.base/sun.util.resources.Bundles.of(Bundles.java:104)
      at java.base/sun.util.resources.LocaleData.getBundle(LocaleData.java:179)
      at java.base/sun.util.resources.LocaleData.getDateFormatData(LocaleData.java:143)
      at java.base/java.text.DateFormatSymbols.initializeData(DateFormatSymbols.java:745)
      at java.base/java.text.DateFormatSymbols.<init>(DateFormatSymbols.java:151)
      at java.base/sun.util.locale.provider.DateFormatSymbolsProviderImpl.getInstance(DateFormatSymbolsProviderImpl.java:85)
      at java.base/java.text.DateFormatSymbols.getProviderInstance(DateFormatSymbols.java:357)
      at java.base/java.text.DateFormatSymbols.getInstance(DateFormatSymbols.java:347)
      at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:626)
      at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:603)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.getLastResortErrorLogFile(SystemApplicationClassLoaderWorker.java:137)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:105)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
      at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
      at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by: java.io.IOException: Error while instrumenting sun/util/resources/provider/LocaleDataProvider with JaCoCo 0.8.12.202403310830/dbfb6f2.
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrumentError(Instrumenter.java:161)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:111)
      at org.jacoco.agent.rt.internal_aeaf9ab.CoverageTransformer.transform(CoverageTransformer.java:92)
      ... 35 more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 68
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:200)
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:180)
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:166)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.internal.instr.InstrSupport.classReaderFor(InstrSupport.java:280)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:77)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:109)
      ... 36 more
java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/text/resources/cldr/ext/FormatData_en_001 with JaCoCo 0.8.12.202403310830/dbfb6f2.
      at org.jacoco.agent.rt.internal_aeaf9ab.CoverageTransformer.transform(CoverageTransformer.java:94)
      at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:257)
      at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
      at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:594)
      at java.base/java.lang.ClassLoader.defineClass2(Native Method)
      at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1052)
      at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:164)
      at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:735)
      at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:678)
      at java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:560)
      at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:602)
      at java.base/java.lang.Class.forName(Class.java:595)
      at jdk.localedata/sun.util.resources.provider.LocaleDataProvider.loadResourceBundle(LocaleDataProvider.java:53)
      at jdk.localedata/sun.util.resources.provider.LocaleDataProvider.getBundle(LocaleDataProvider.java:39)
      at java.base/sun.util.resources.Bundles.loadBundleFromProviders(Bundles.java:264)
      at java.base/sun.util.resources.Bundles.findBundleOf(Bundles.java:199)
      at java.base/sun.util.resources.Bundles.findBundleOf(Bundles.java:158)
      at java.base/sun.util.resources.Bundles.findBundleOf(Bundles.java:158)
      at java.base/sun.util.resources.Bundles.loadBundleOf(Bundles.java:143)
      at java.base/sun.util.resources.Bundles.of(Bundles.java:104)
      at java.base/sun.util.resources.LocaleData.getBundle(LocaleData.java:179)
      at java.base/sun.util.resources.LocaleData.getDateFormatData(LocaleData.java:143)
      at java.base/java.text.DateFormatSymbols.initializeData(DateFormatSymbols.java:745)
      at java.base/java.text.DateFormatSymbols.<init>(DateFormatSymbols.java:151)
      at java.base/sun.util.locale.provider.DateFormatSymbolsProviderImpl.getInstance(DateFormatSymbolsProviderImpl.java:85)
      at java.base/java.text.DateFormatSymbols.getProviderInstance(DateFormatSymbols.java:357)
      at java.base/java.text.DateFormatSymbols.getInstance(DateFormatSymbols.java:347)
      at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:626)
      at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:603)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.getLastResortErrorLogFile(SystemApplicationClassLoaderWorker.java:137)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:105)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
      at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
      at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by: java.io.IOException: Error while instrumenting sun/text/resources/cldr/ext/FormatData_en_001 with JaCoCo 0.8.12.202403310830/dbfb6f2.
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrumentError(Instrumenter.java:161)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:111)
      at org.jacoco.agent.rt.internal_aeaf9ab.CoverageTransformer.transform(CoverageTransformer.java:92)
      ... 33 more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 68
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:200)
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:180)
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:166)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.internal.instr.InstrSupport.classReaderFor(InstrSupport.java:280)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:77)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:109)
      ... 34 more
java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/text/resources/cldr/ext/FormatData_en_150 with JaCoCo 0.8.12.202403310830/dbfb6f2.
      at org.jacoco.agent.rt.internal_aeaf9ab.CoverageTransformer.transform(CoverageTransformer.java:94)
      at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:257)
      at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
      at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:594)
      at java.base/java.lang.ClassLoader.defineClass2(Native Method)
      at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1052)
      at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:164)
      at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:735)
      at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:678)
      at java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:560)
      at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:602)
      at java.base/java.lang.Class.forName(Class.java:595)
      at jdk.localedata/sun.util.resources.provider.LocaleDataProvider.loadResourceBundle(LocaleDataProvider.java:53)
      at jdk.localedata/sun.util.resources.provider.LocaleDataProvider.getBundle(LocaleDataProvider.java:39)
      at java.base/sun.util.resources.Bundles.loadBundleFromProviders(Bundles.java:264)
      at java.base/sun.util.resources.Bundles.findBundleOf(Bundles.java:199)
      at java.base/sun.util.resources.Bundles.findBundleOf(Bundles.java:158)
      at java.base/sun.util.resources.Bundles.loadBundleOf(Bundles.java:143)
      at java.base/sun.util.resources.Bundles.of(Bundles.java:104)
      at java.base/sun.util.resources.LocaleData.getBundle(LocaleData.java:179)
      at java.base/sun.util.resources.LocaleData.getDateFormatData(LocaleData.java:143)
      at java.base/java.text.DateFormatSymbols.initializeData(DateFormatSymbols.java:745)
      at java.base/java.text.DateFormatSymbols.<init>(DateFormatSymbols.java:151)
      at java.base/sun.util.locale.provider.DateFormatSymbolsProviderImpl.getInstance(DateFormatSymbolsProviderImpl.java:85)
      at java.base/java.text.DateFormatSymbols.getProviderInstance(DateFormatSymbols.java:357)
      at java.base/java.text.DateFormatSymbols.getInstance(DateFormatSymbols.java:347)
      at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:626)
      at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:603)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.getLastResortErrorLogFile(SystemApplicationClassLoaderWorker.java:137)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:105)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
      at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
      at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by: java.io.IOException: Error while instrumenting sun/text/resources/cldr/ext/FormatData_en_150 with JaCoCo 0.8.12.202403310830/dbfb6f2.
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrumentError(Instrumenter.java:161)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:111)
      at org.jacoco.agent.rt.internal_aeaf9ab.CoverageTransformer.transform(CoverageTransformer.java:92)
      ... 32 more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 68
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:200)
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:180)
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:166)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.internal.instr.InstrSupport.classReaderFor(InstrSupport.java:280)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:77)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:109)
      ... 33 more
java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/text/resources/cldr/ext/FormatData_en_DE with JaCoCo 0.8.12.202403310830/dbfb6f2.
      at org.jacoco.agent.rt.internal_aeaf9ab.CoverageTransformer.transform(CoverageTransformer.java:94)
      at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:257)
      at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
      at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:594)
      at java.base/java.lang.ClassLoader.defineClass2(Native Method)
      at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1052)
      at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:164)
      at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:735)
      at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:678)
      at java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:560)
      at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:602)
      at java.base/java.lang.Class.forName(Class.java:595)
      at jdk.localedata/sun.util.resources.provider.LocaleDataProvider.loadResourceBundle(LocaleDataProvider.java:53)
      at jdk.localedata/sun.util.resources.provider.LocaleDataProvider.getBundle(LocaleDataProvider.java:39)
      at java.base/sun.util.resources.Bundles.loadBundleFromProviders(Bundles.java:264)
      at java.base/sun.util.resources.Bundles.findBundleOf(Bundles.java:199)
      at java.base/sun.util.resources.Bundles.loadBundleOf(Bundles.java:143)
      at java.base/sun.util.resources.Bundles.of(Bundles.java:104)
      at java.base/sun.util.resources.LocaleData.getBundle(LocaleData.java:179)
      at java.base/sun.util.resources.LocaleData.getDateFormatData(LocaleData.java:143)
      at java.base/java.text.DateFormatSymbols.initializeData(DateFormatSymbols.java:745)
      at java.base/java.text.DateFormatSymbols.<init>(DateFormatSymbols.java:151)
      at java.base/sun.util.locale.provider.DateFormatSymbolsProviderImpl.getInstance(DateFormatSymbolsProviderImpl.java:85)
      at java.base/java.text.DateFormatSymbols.getProviderInstance(DateFormatSymbols.java:357)
      at java.base/java.text.DateFormatSymbols.getInstance(DateFormatSymbols.java:347)
      at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:626)
      at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:603)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.getLastResortErrorLogFile(SystemApplicationClassLoaderWorker.java:137)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:105)
      at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
      at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
      at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by: java.io.IOException: Error while instrumenting sun/text/resources/cldr/ext/FormatData_en_DE with JaCoCo 0.8.12.202403310830/dbfb6f2.
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrumentError(Instrumenter.java:161)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:111)
      at org.jacoco.agent.rt.internal_aeaf9ab.CoverageTransformer.transform(CoverageTransformer.java:92)
      ... 31 more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 68
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:200)
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:180)
      at org.jacoco.agent.rt.internal_aeaf9ab.asm.ClassReader.<init>(ClassReader.java:166)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.internal.instr.InstrSupport.classReaderFor(InstrSupport.java:280)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:77)
      at org.jacoco.agent.rt.internal_aeaf9ab.core.instr.Instrumenter.instrument(Instrumenter.java:109)
      ... 32 more

And in the end, the jacocoTestReport task fails as well.

The following sections of build.gradle file might be relevant:

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(24)
    }
}

// ...

jacoco {
    toolVersion = '0.8.12'
}

I originally wondered if this is a problem with Gradle, but I can also reproduce the issue by using the jacococli:

java -jar jacococli.jar instrument /build/classes/java/main/com/example/application --dest .

Exception in thread "main" java.io.IOException: Error while instrumenting /build/classes/java/main/com/example/application/App.class with JaCoCo 0.8.12.202403310830/dbfb6f2.
	at org.jacoco.cli.internal.core.instr.Instrumenter.instrumentError(Instrumenter.java:161)
	at org.jacoco.cli.internal.core.instr.Instrumenter.instrument(Instrumenter.java:111)
	at org.jacoco.cli.internal.core.instr.Instrumenter.instrument(Instrumenter.java:136)
	at org.jacoco.cli.internal.core.instr.Instrumenter.instrument(Instrumenter.java:156)
	at org.jacoco.cli.internal.core.instr.Instrumenter.instrumentAll(Instrumenter.java:196)
	at org.jacoco.cli.internal.commands.Instrument.instrument(Instrument.java:89)
	at org.jacoco.cli.internal.commands.Instrument.instrumentRecursive(Instrument.java:78)
	at org.jacoco.cli.internal.commands.Instrument.instrumentRecursive(Instrument.java:74)
	at org.jacoco.cli.internal.commands.Instrument.execute(Instrument.java:61)
	at org.jacoco.cli.internal.Main.execute(Main.java:90)
	at org.jacoco.cli.internal.Main.main(Main.java:105)
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 68
	at org.jacoco.cli.internal.asm.ClassReader.<init>(ClassReader.java:200)
	at org.jacoco.cli.internal.asm.ClassReader.<init>(ClassReader.java:180)
	at org.jacoco.cli.internal.asm.ClassReader.<init>(ClassReader.java:166)
	at org.jacoco.cli.internal.core.internal.instr.InstrSupport.classReaderFor(InstrSupport.java:280)
	at org.jacoco.cli.internal.core.instr.Instrumenter.instrument(Instrumenter.java:77)
	at org.jacoco.cli.internal.core.instr.Instrumenter.instrument(Instrumenter.java:109)
	... 9 more

The issue happens when running the above command with JAVA_HOME as either Java 23 or 24.

Wanted Behaviour

JaCoCo should support JDK 24 code bases.

Possible Workarounds

None

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions