Hi,

By doing

testLogging.events=["skipped", "failed"]

inside of your testng task ( 
https://github.com/akarnokd/RxJavaFiberInterop/blob/e83b813321f15222334c53cfc2667d3335b075f4/build.gradle#L110
 )
you're hiding standard error output.

After change on

testLogging.events=["skipped", "failed", "standard_error"]

you'll see root cause, which for some reason gets lost and not preserved in 
exception that you currently see

Gradle Test Executor 8 STANDARD_ERROR
    java.lang.instrument.IllegalClassFormatException: Error while 
instrumenting sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo.
        at 
org.jacoco.agent.rt.internal_035b120.CoverageTransformer.transform(CoverageTransformer.java:93)
    Caused by: java.io.IOException: Error while instrumenting 
sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo.
        at 
org.jacoco.agent.rt.internal_035b120.core.instr.Instrumenter.instrumentError(Instrumenter.java:158)
        at 
org.jacoco.agent.rt.internal_035b120.core.instr.Instrumenter.instrument(Instrumenter.java:108)
        at 
org.jacoco.agent.rt.internal_035b120.CoverageTransformer.transform(CoverageTransformer.java:91)
        ... 64 more
    Caused by: java.lang.IllegalArgumentException: Unsupported class file 
major version 58
 
Page http://jdk.java.net/loom/ states

Warning: This build is based on an incomplete version of JDK 14. 

JDK 14 contains class files with major version 58 (Java 14 bytecode) and 
sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo is one of them,
whereas JaCoCo 0.8.4 does not support instrumentation of Java 14 bytecode - 
see https://www.jacoco.org/jacoco/trunk/doc/changes.html :
official support for instrumentation of Java 12 bytecode since version 
0.8.4,
and experimental support for instrumentation of Java 13 bytecode since 
version 0.8.3.

Your class files compiled into Java 11 bytecode,
and you probably not interested in coverage of any other class files,
so you can include only them into instrumentation by addition to testng task

jacoco.includes = ["hu/akarnokd/**"]

Or you can try unreleased JaCoCo version 0.8.5-SNAPSHOT ( 
https://www.jacoco.org/jacoco/trunk/doc/repo.html ) that contains 
experimental support for instrumentation of Java 14 bytecode ( 
https://github.com/jacoco/jacoco/pull/897 ).


Regards,
Evgeny
 


On Wednesday, July 31, 2019 at 7:21:21 PM UTC+2, Dávid Karnok wrote:
>
> Hi!
>
> I'm experimenting with the Project Loom build (http://jdk.java.net/loom/) 
> using a small gradle project that uses TestNG:
>
>
> https://github.com/akarnokd/RxJavaFiberInterop/blob/e83b813321f15222334c53cfc2667d3335b075f4/build.gradle#L19
>
> If I enable Jacoco and run "check", I get a hefty exception (on Windows):
>
> java.lang.LinkageError: loader 'platform' attempted duplicate class 
> definition for sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo. 
> (sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo is in module 
> jdk.localedata of loader 'platform')
>
>
> Caused by: java.util.ServiceConfigurationError: 
> sun.util.locale.provider.LocaleDataMetaInfo: Unable to load 
> sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo
>       at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:583)
>       at 
> java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:855)
>       at 
> java.base/java.util.ServiceLoader$ModuleServicesLookupIterator.hasNext(ServiceLoader.java:1077)
>       at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1300)
>       at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1385)
>       at 
> java.base/sun.util.cldr.CLDRLocaleProviderAdapter$1.run(CLDRLocaleProviderAdapter.java:89)
>       at 
> java.base/sun.util.cldr.CLDRLocaleProviderAdapter$1.run(CLDRLocaleProviderAdapter.java:86)
>       at 
> java.base/java.security.AccessController.doPrivileged(AccessController.java:553)
>       at 
> java.base/sun.util.cldr.CLDRLocaleProviderAdapter.<init>(CLDRLocaleProviderAdapter.java:86)
>       at 
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>  Method)
>       at 
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>       at 
> java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>       at 
> java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
>       at 
> java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:166)
>       at 
> java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:404)
>       at java.base/java.lang.Class.newInstance(Class.java:591)
>       at 
> java.base/sun.util.locale.provider.LocaleProviderAdapter.forType(LocaleProviderAdapter.java:176)
>       at 
> java.base/sun.util.locale.provider.LocaleProviderAdapter.findAdapter(LocaleProviderAdapter.java:279)
>       at 
> java.base/sun.util.locale.provider.LocaleProviderAdapter.getAdapter(LocaleProviderAdapter.java:250)
>       at 
> java.base/java.text.DecimalFormatSymbols.getInstance(DecimalFormatSymbols.java:180)
>       at java.base/java.util.Formatter.getZero(Formatter.java:2437)
>       at java.base/java.util.Formatter.<init>(Formatter.java:1956)
>       at java.base/java.util.Formatter.<init>(Formatter.java:1978)
>       at java.base/java.lang.String.format(String.java:3274)
>       at org.testng.internal.Utils.<clinit>(Utils.java:32)
>       at org.testng.TestNG.setOutputDirectory(TestNG.java:217)
>       at 
> org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.runTests(TestNGTestClassProcessor.java:102)
>       at 
> org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.stop(TestNGTestClassProcessor.java:89)
>       at 
> org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
>       ... 25 more
> Caused by: java.lang.LinkageError: loader 'platform' attempted duplicate 
> class definition for sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo. 
> (sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo is in module 
> jdk.localedata of loader 'platform')
>       at java.base/java.lang.ClassLoader.defineClass2(Native Method)
>       at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1108)
>       at 
> java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:183)
>       at 
> java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:782)
>       at 
> java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:703)
>       at 
> java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:584)
>       at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:633)
>       at java.base/java.lang.Class.forName(Class.java:492)
>       at 
> java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:853)
>       ... 52 more
>
>
>
> Is there a setting I'm missing that could cause this problem?
>
> Thank you for your time.
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jacoco/ae033714-ba6c-4480-835a-386ede4968dc%40googlegroups.com.

Reply via email to