Skip to content

Update jacoco maven plugin to compile on Java 17 #2835

Description

@ivlcic

Can you please bump jacoco-maven-plugin version from 0.8.6 to 0.8.7 in parent/pom.xml to enable JDK17 compiler support.
Currently it fails because of the target class version.

<plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>0.8.6</version>
</plugin>

Log output for mvn clean install and / or ./mvnw clean install

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[ERROR] java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo.
[ERROR]         at org.jacoco.agent.rt.internal_f3994fa.CoverageTransformer.transform(CoverageTransformer.java:94)
[ERROR]         at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244)
[ERROR]         at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
[ERROR]         at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:541)
[ERROR]         at java.base/java.lang.ClassLoader.defineClass2(Native Method)
[ERROR]         at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1103)
[ERROR]         at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:182)
[ERROR]         at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
[ERROR]         at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:741)
[ERROR]         at java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:621)
[ERROR]         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:632)
[ERROR]         at java.base/java.lang.Class.forName(Class.java:545)
[ERROR]         at java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:859)
[ERROR]         at java.base/java.util.ServiceLoader$ModuleServicesLookupIterator.hasNext(ServiceLoader.java:1084)
[ERROR]         at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
[ERROR]         at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1393)
[ERROR]         at java.base/sun.util.cldr.CLDRLocaleProviderAdapter.lambda$new$0(CLDRLocaleProviderAdapter.java:86)
[ERROR]         at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
[ERROR]         at java.base/sun.util.cldr.CLDRLocaleProviderAdapter.<init>(CLDRLocaleProviderAdapter.java:85)
[ERROR]         at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[ERROR]         at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
[ERROR]         at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[ERROR]         at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
[ERROR]         at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
[ERROR]         at java.base/sun.util.locale.provider.LocaleProviderAdapter.forType(LocaleProviderAdapter.java:188)
[ERROR]         at java.base/sun.util.locale.provider.LocaleProviderAdapter.findAdapter(LocaleProviderAdapter.java:287)
[ERROR]         at java.base/sun.util.locale.provider.LocaleProviderAdapter.getAdapter(LocaleProviderAdapter.java:258)
[ERROR]         at java.base/java.text.DateFormatSymbols.getProviderInstance(DateFormatSymbols.java:368)
[ERROR]         at java.base/java.text.DateFormatSymbols.getInstance(DateFormatSymbols.java:346)
[ERROR]         at java.base/java.util.Formatter$FormatSpecifier.print(Formatter.java:4335)
[ERROR]         at java.base/java.util.Formatter$FormatSpecifier.print(Formatter.java:4199)
[ERROR]         at java.base/java.util.Formatter$FormatSpecifier.printDateTime(Formatter.java:3002)
[ERROR]         at java.base/java.util.Formatter$FormatSpecifier.print(Formatter.java:2911)
[ERROR]         at java.base/java.util.Formatter.format(Formatter.java:2695)
[ERROR]         at java.base/java.util.Formatter.format(Formatter.java:2625)
[ERROR]         at java.base/java.lang.String.format(String.java:4143)
[ERROR]         at java.logging/java.util.logging.SimpleFormatter.format(SimpleFormatter.java:181)
[ERROR]         at java.logging/java.util.logging.StreamHandler.publish(StreamHandler.java:199)
[ERROR]         at java.logging/java.util.logging.ConsoleHandler.publish(ConsoleHandler.java:95)
[ERROR]         at java.logging/java.util.logging.Logger.log(Logger.java:980)
[ERROR]         at org.junit.platform.commons.logging.LoggerFactory$DelegatingLogger.log(LoggerFactory.java:148)
[ERROR]         at org.junit.platform.commons.logging.LoggerFactory$DelegatingLogger.info(LoggerFactory.java:105)
[ERROR]         at org.junit.platform.launcher.core.LauncherConfigurationParameters.loadClasspathResource(LauncherConfigurationParameters.java:206)
[ERROR]         at org.junit.platform.launcher.core.LauncherConfigurationParameters.access$200(LauncherConfigurationParameters.java:37)
[ERROR]         at org.junit.platform.launcher.core.LauncherConfigurationParameters$ParameterProvider.propertiesFile(LauncherConfigurationParameters.java:173)
[ERROR]         at org.junit.platform.launcher.core.LauncherConfigurationParameters$Builder.build(LauncherConfigurationParameters.java:117)
[ERROR]         at org.junit.platform.launcher.core.LauncherFactory.loadAndFilterTestExecutionListeners(LauncherFactory.java:186)
[ERROR]         at org.junit.platform.launcher.core.LauncherFactory.registerTestExecutionListeners(LauncherFactory.java:179)
[ERROR]         at org.junit.platform.launcher.core.LauncherFactory.createDefaultLauncher(LauncherFactory.java:137)
[ERROR]         at org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:125)
[ERROR]         at org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:109)
[ERROR]         at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.<init>(JUnitPlatformProvider.java:90)
[ERROR]         at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[ERROR]         at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
[ERROR]         at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[ERROR]         at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
[ERROR]         at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
[ERROR]         at org.apache.maven.surefire.api.util.ReflectionUtils.instantiateOneArg(ReflectionUtils.java:123)
[ERROR]         at org.apache.maven.surefire.booter.ForkedBooter.createProviderInCurrentClassloader(ForkedBooter.java:491)
[ERROR]         at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:428)
[ERROR]         at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
[ERROR]         at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:562)
[ERROR]         at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:548)
[ERROR] Caused by: java.io.IOException: Error while instrumenting sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo.
[ERROR]         at org.jacoco.agent.rt.internal_f3994fa.core.instr.Instrumenter.instrumentError(Instrumenter.java:160)
[ERROR]         at org.jacoco.agent.rt.internal_f3994fa.core.instr.Instrumenter.instrument(Instrumenter.java:110)
[ERROR]         at org.jacoco.agent.rt.internal_f3994fa.CoverageTransformer.transform(CoverageTransformer.java:92)
[ERROR]         ... 62 more
[ERROR] Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 61
[ERROR]         at org.jacoco.agent.rt.internal_f3994fa.asm.ClassReader.<init>(ClassReader.java:196)
[ERROR]         at org.jacoco.agent.rt.internal_f3994fa.asm.ClassReader.<init>(ClassReader.java:177)
[ERROR]         at org.jacoco.agent.rt.internal_f3994fa.asm.ClassReader.<init>(ClassReader.java:163)
[ERROR]         at org.jacoco.agent.rt.internal_f3994fa.core.internal.instr.InstrSupport.classReaderFor(InstrSupport.java:280)
[ERROR]         at org.jacoco.agent.rt.internal_f3994fa.core.instr.Instrumenter.instrument(Instrumenter.java:76)
[ERROR]         at org.jacoco.agent.rt.internal_f3994fa.core.instr.Instrumenter.instrument(Instrumenter.java:108)
[ERROR]         ... 63 more

Java version:

nikola@bemtem ~/projects/mapstruct $ java -version
openjdk version "17.0.3" 2022-04-19
OpenJDK Runtime Environment (build 17.0.3+5)
OpenJDK 64-Bit Server VM (build 17.0.3+5, mixed mode)

0 ✓ nikola@bemtem ~/projects/mapstruct $ echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk

Both ./mvnw and locally installed mvn fail:

0 ✓ nikola@bemtem ~/projects/mapstruct $ mvn -version
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /opt/maven
Java version: 17.0.3, vendor: N/A, runtime: /usr/lib/jvm/java-17-openjdk
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.17.3-arch1-1", arch: "amd64", family: "unix"

0 ✓ nikola@bemtem ~/projects/mapstruct $ ./mvnw -version
Apache Maven 3.8.2 (ea98e05a04480131370aa0c110b8c54cf726c06f)
Maven home: /home/nikola/.m2/wrapper/dists/apache-maven-3.8.2-bin/1um3pu5poco57pibs3g92d6vrf/apache-maven-3.8.2
Java version: 17.0.3, vendor: N/A, runtime: /usr/lib/jvm/java-17-openjdk
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.17.3-arch1-1", arch: "amd64", family: "unix"
0 ✓ nikola@bemtem ~/projects/mapstruct $

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions