-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support JDK 10 #629
Support JDK 10 #629
Conversation
@Godin Just a idea: Instead of implementing/removing a |
@marchof |
Maybe one day OpenJDK will release specification before implementation... just dreaming. |
BTW there is a trick to launch JaCoCo agent with JDK 10 EA in case when application under test doesn't have Java 10 bytecode by replacing seems that there were changes in
We'll be using |
ASM 6.1 beta has been released: http://central.maven.org/maven2/org/ow2/asm/asm/6.1-beta/ |
@don-vip we know 😉 and it breaks our tests, for the time being have strong feeling that there is regression on their side, but still investigating. Anyway thanks for notification 👍 |
For the record regression that breaks our tests - https://gitlab.ow2.org/asm/asm/issues/317805 Looks like our main code is not affected, but given massive refactorings in this version, presence of this regression and the need to disable affected tests as its consequence, reduce confidence. Also don't know if possible to add beta versions into Eclipse Orbit (for Eclipse EclEmma), but given the above I don't think that this even deserves to be investigated. So for now for JaCoCo and for EclEmma still might be safer to do a workaround with ASM 6.0. BTW tried different than before approach for workaround and fortunately accidentally found https://gitlab.ow2.org/asm/asm/issues/317807 And BTW in context of JDK 10 the following regression in javac should be mentioned - https://bugs.openjdk.java.net/browse/JDK-8193449 , which is still not resolved. @don-vip feel free to do your own build of JaCoCo with ASM 6.1-beta and test it on your projects: diff --git org.jacoco.build/pom.xml org.jacoco.build/pom.xml
index d5f911e4..df39b903 100644
--- org.jacoco.build/pom.xml
+++ org.jacoco.build/pom.xml
@@ -141,7 +141,7 @@
<argLine>${jvm.args}</argLine>
<!-- Dependencies versions -->
- <asm.version>6.0</asm.version>
+ <asm.version>6.1-beta</asm.version>
<ant.version>1.7.1</ant.version>
<args4j.version>2.0.28</args4j.version>
<junit.version>4.8.2</junit.version>
@@ -666,7 +666,7 @@
</Export-Package>
<Import-Package>
org.jacoco.*;version="${range;[===,==+);${Bundle-Version}}",
- org.objectweb.asm.*;version="${range;[===,=+);${asm.version}}"
+ org.objectweb.asm.*;version="${range;[===,=+);6.1}"
</Import-Package>
<Bundle-RequiredExecutionEnvironment>J2SE-1.5</Bundle-RequiredExecutionEnvironment>
<Eclipse-SourceReferences>scm:git:git://github.com/jacoco/jacoco.git;path="${project.artifactId}";commitId=${buildNumber}</Eclipse-SourceReferences>
diff --git org.jacoco.core/src/org/jacoco/core/internal/ContentTypeDetector.java org.jacoco.core/src/org/jacoco/core/internal/ContentTypeDetector.java
index ae665624..324ba36a 100644
--- org.jacoco.core/src/org/jacoco/core/internal/ContentTypeDetector.java
+++ org.jacoco.core/src/org/jacoco/core/internal/ContentTypeDetector.java
@@ -83,6 +83,7 @@ public class ContentTypeDetector {
case Opcodes.V1_7:
case Opcodes.V1_8:
case Opcodes.V9:
+ case Opcodes.V10:
return CLASSFILE;
}
} |
…df9d2c8221ed5b928b36ebf62 + patch) + asm 6.1-beta (58b93c69) see jacoco/jacoco#629 (comment) git-svn-id: http://josm.openstreetmap.de/svn/trunk@13305 0c6e7542-c601-0410-84e7-c038aed88b3b
@Godin : we now use the latest snapshot versions of jacoco (patched as above) & asm (built manually) and it works! Thank you :) |
…df9d2c8221ed5b928b36ebf62 + patch) + asm 6.1-beta (58b93c69) see jacoco/jacoco#629 (comment) git-svn-id: https://josm.openstreetmap.de/svn/trunk@13305 0c6e7542-c601-0410-84e7-c038aed88b3b
Hi @Godin |
Hi
|
|
Perhaps JDK 11 can be supported too? EA versions are available at http://jdk.java.net/11/ |
ASM 6.1 has been released. |
Of course this is not enough, because ASM 6.1 does not support Java 11 bytecode: as was stated in #629 (comment) bytecode version 11 is not just an increment, but a real change - more specifically JEP 309 scheduled on JDK 11 and will introduce new class-file constants, which must be properly read and written by ASM, which requires changes in ASM. So we can't support instrumentation of Java 11 bytecode without changes in ASM. Maybe we can support execution under JDK 11, but as was stated in #629 (comment) this requires some development and testing. Also speaking in general, don't you think that pressuring us about support of something that was not released sounds a bit strange? This sounds like asking for proper support of Java 9 at a time of Java 5 release. Please also have in mind that we maintain JaCoCo in a free time, and have other projects and personal lives.
Thank you everybody for all the notifications with news about ASM, but please stop - we know all these news directly from the ASM mailing list and even monitor changes in theirs Git and issue tracker. Same for notifications about news in JDK world and its Early Access builds - we regularly test EAs, specifically we investigated and reported several regressions in 10 as well as tested their resolutions, which btw also consumes our time. As was stated before (#629 (comment)) upgrade of ASM version in JaCoCo requires availability of that version for Eclipse EclEmma and work on this was started at the day of release of ASM - https://bugs.eclipse.org/bugs/show_bug.cgi?id=532291 All in all - we do plan release with Java 10 support and after that do plan to work on Java 11 support, please be a bit patient. Thank you for your understanding. |
@Godin Thank you for your very detailed answer and please accept my apologies, I didn't want to upset you in any way. I'm going to disable coverage for Java >= 11 and patiently wait for an update 👍 |
This is going to come up a lot with Java's new release cadence. Projects want to ensure that the Java release in development doesn't cause regressions. I suggest adding a note to the Readme that the recommended approach is to disable coverage for unsupported Java versions as it may take a while due to the reasons outlined by @Godin. |
@marchof while I started process of addition of ASM 6.1 into Eclipse Orbit and CQ was already accepted, I'm not convinced that for support of Java 10 we should use it.
Not counting V10 constant seems that the only interesting thing is a fix of regression introduced in 6.0 that we observed during previous upgrade
and the rest is massive rewrite of 6.0 that is bugs/regressions prone. Here is concrete example uncovered today while playing with EclEmma on some Eclipse projects, unfortunately after 6.1 release and already reported as https://gitlab.ow2.org/asm/asm/issues/317815 import java.lang.annotation.*;
class Example {
@Documented
@Retention(value=RetentionPolicy.CLASS)
@Target(value=ElementType.TYPE_USE)
@interface NonNull {
}
void fun() {
@NonNull Object o = legacy();
}
Object legacy() {
return new Object();
}
} current version of JaCoCo based on ASM 6.0 and hence EclEmma perfectly able to instrument this class, however JaCoCo and EclEmma after upgrade fail with NPE in
To sum up - as of today options for Java 10 (GA 2018/03/20) support in JaCoCo:
According to https://wiki.eclipse.org/Development_Resources/Contribution_Questionnaire in case of first two options CQ won't be needed once service release is available. In first case JaCoCo will get regression that known in advance and that might turn out to be serious, so also risk that we'll not update JaCoCo in EclEmma for Java 10 support. In second case still risk that some other regression will sneak into Photon EPP (GA 2018/06/27) till Photon.1 in September. Can polish/prepare third option this week and we will able to decide between it and second to release JaCoCo before/at same time as JDK 10. So, @marchof , WDYT? |
git-svn-id: https://josm.openstreetmap.de/svn/trunk@13523 0c6e7542-c601-0410-84e7-c038aed88b3b
@marchof I think all comments were addressed, so could you please re-review? |
@Godin Done, thanks! |
thanks guys for your hard work I just tested a build and everything works fine!! |
Now that JaCoCo 0.8.1 with Java 10 support has been released, can think of Java 11. And here is question to you guys @don-vip @ijuma @sormuras : do you compile into bytecode version 55 (Java 11) or just run under JDK 11 EA ? The reason for this question is that the second case is easier and maybe could be possible to implement before ASM release. |
"JUnit 5" uses I will test our build against JaCoCo 0.8.1 tonight and report back here. |
@sormuras just to be sure that there is no misunderstanding: JaCoCo 0.8.1 supports bytecode versions from 45 (Java 1.1) to 54 (Java 10) and runs under JDKs from 5 to 10, and doesn't run under JDK 11 EA. My question about 11 EA is for our future work. |
@Godin We use |
Understood. We're using OracleJDK 9 and OpenJDK 10 to build and test JUnit 5 at the moment: https://travis-ci.org/junit-team/junit5/builds/355963543 -- JaCoCo is only activated when running with 9. This might change tonight, after upgrading to JaCoCo 0.8.1 11-ea is blocked by gradle/gradle#4515 ... was blocked! Waiting for Gradle 4.7-RC1 now, and JaCoCo 0.8.2? 😉 |
fyi, JaCoCo 0.8.1 works like a charm on OpenJDK 10: https://codecov.io/gh/junit-team/junit5/list/0bb65c5b945e3cfbb7c99ded92b80b96642e96e6/ |
See jacoco/jacoco#629 (cherry picked from commit 4c350ed)
@don-vip have you lost initial interest about JDK 11 EA ? 😉 or my earlier comment offended you? if so I sincerely apologize. Could you please answer on #629 (comment) |
@Godin I'm neither offended (don't worry :)) nor lost interest in JDK 11, I simply didn't see the Github notification :) To answer your question, our build compiles and runs tests using the same JDK. So for JDK 11, we compile our classes with JDK11 and run tests with it too. We faced the same error than previously with JDK 10 ( |
git-svn-id: https://josm.openstreetmap.de/svn/trunk@13523 0c6e7542-c601-0410-84e7-c038aed88b3b
With JDK 10, `./gradlew allTest` fails to run any tests, instead spewing out the following errors on the console: Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:510) FATAL ERROR in native method: processing of -javaagent failed at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:522) Caused by: java.lang.RuntimeException: Class java/lang/UnknownError could not be instrumented. at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:139) at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:100) at org.jacoco.agent.rt.internal_290345e.PreMain.createRuntime(PreMain.java:55) at org.jacoco.agent.rt.internal_290345e.PreMain.premain(PreMain.java:47) ... 6 more Caused by: java.lang.NoSuchFieldException: $jacocoAccess at java.base/java.lang.Class.getField(Class.java:1958) at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:137) ... 9 more ... and so forth According to a PR[1] on the JaCoCo's issue tracker, this occurs because "Classes of JDK 10 EA b35 use a new classfile version number and so JaCoCo Agent 0.7.9 as well as agent from current build of master branch fail to start". This has been fixed as of JaCoCo 0.8.1, which also happens to be the latest release. We do not explicitly specify the version JaCoCo to use in our build.gradle file, and so the `jacoco` gradle plugin just uses its default, which happens to be `0.8.0` on Gradle 4.6 (the version we are using). This version of JaCoCo still has this bug, and so we get the errors. Fix this by explicitly telling the gradle jacoco plugin to use JaCoCo version 0.8.1. [1] jacoco/jacoco#629
With JDK 10, `./gradlew allTest` fails to run any tests, instead spewing out the following errors on the console: Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:510) FATAL ERROR in native method: processing of -javaagent failed at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:522) Caused by: java.lang.RuntimeException: Class java/lang/UnknownError could not be instrumented. at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:139) at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:100) at org.jacoco.agent.rt.internal_290345e.PreMain.createRuntime(PreMain.java:55) at org.jacoco.agent.rt.internal_290345e.PreMain.premain(PreMain.java:47) ... 6 more Caused by: java.lang.NoSuchFieldException: $jacocoAccess at java.base/java.lang.Class.getField(Class.java:1958) at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:137) ... 9 more ... and so forth According to a PR[1] on the JaCoCo's issue tracker, this occurs because "Classes of JDK 10 EA b35 use a new classfile version number and so JaCoCo Agent 0.7.9 as well as agent from current build of master branch fail to start". This has been fixed as of JaCoCo 0.8.1, which also happens to be the latest release. We do not explicitly specify the version JaCoCo to use in our build.gradle file, and so the `jacoco` gradle plugin just uses its default, which happens to be 0.8.0[2] on Gradle 4.6 (the version we are using). This version of JaCoCo still has this bug, and so we get the errors. Fix this by explicitly telling the gradle jacoco plugin to use JaCoCo version 0.8.1. [1] jacoco/jacoco#629 [2] gradle/gradle@8a09484
With JDK 10, `./gradlew allTest` fails to run any test, instead spewing out the following errors on the console: Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:510) FATAL ERROR in native method: processing of -javaagent failed at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:522) Caused by: java.lang.RuntimeException: Class java/lang/UnknownError could not be instrumented. at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:139) at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:100) at org.jacoco.agent.rt.internal_290345e.PreMain.createRuntime(PreMain.java:55) at org.jacoco.agent.rt.internal_290345e.PreMain.premain(PreMain.java:47) ... 6 more Caused by: java.lang.NoSuchFieldException: $jacocoAccess at java.base/java.lang.Class.getField(Class.java:1958) at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:137) ... 9 more ... and so forth According to a PR[1] on the JaCoCo's issue tracker, this occurs because "Classes of JDK 10 EA b35 use a new classfile version number and so JaCoCo Agent 0.7.9 as well as agent from current build of master branch fail to start". This has been fixed as of JaCoCo 0.8.1, which also happens to be the latest release. We do not explicitly specify the version JaCoCo to use in our build.gradle file, and so the `jacoco` gradle plugin just uses its default, which happens to be 0.8.0[2] on Gradle 4.6 (the version we are using). This version of JaCoCo still has this bug, and so we get the errors. Fix this by explicitly telling the gradle jacoco plugin to use JaCoCo version 0.8.1. [1] jacoco/jacoco#629 [2] gradle/gradle@8a09484
With JDK 10, `./gradlew allTest` fails to run tests, instead spewing out the following errors on the console: Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:510) FATAL ERROR in native method: processing of -javaagent failed at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:522) Caused by: java.lang.RuntimeException: Class java/lang/UnknownError could not be instrumented. at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:139) at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:100) at org.jacoco.agent.rt.internal_290345e.PreMain.createRuntime(PreMain.java:55) at org.jacoco.agent.rt.internal_290345e.PreMain.premain(PreMain.java:47) ... 6 more Caused by: java.lang.NoSuchFieldException: $jacocoAccess at java.base/java.lang.Class.getField(Class.java:1958) at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:137) ... 9 more ... and so forth According to a PR[1] on the JaCoCo's issue tracker, this occurs because "Classes of JDK 10 EA b35 use a new classfile version number and so JaCoCo Agent 0.7.9 as well as agent from current build of master branch fail to start". This has been fixed as of JaCoCo 0.8.1, which also happens to be the latest release. We do not explicitly specify the version JaCoCo to use in our build.gradle file, and so the `jacoco` gradle plugin just uses its default, which happens to be 0.8.0[2] on Gradle 4.6 (the version we are using). This version of JaCoCo still has this bug, and so we get these errors. Fix this by explicitly telling the gradle jacoco plugin to use JaCoCo version 0.8.1. [1] jacoco/jacoco#629 [2] gradle/gradle@8a09484
With JDK 10, `./gradlew allTest` fails to run tests, instead spewing out the following errors on the console: Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:510) FATAL ERROR in native method: processing of -javaagent failed at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:522) Caused by: java.lang.RuntimeException: Class java/lang/UnknownError could not be instrumented. at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:139) at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:100) at org.jacoco.agent.rt.internal_290345e.PreMain.createRuntime(PreMain.java:55) at org.jacoco.agent.rt.internal_290345e.PreMain.premain(PreMain.java:47) ... 6 more Caused by: java.lang.NoSuchFieldException: $jacocoAccess at java.base/java.lang.Class.getField(Class.java:1958) at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:137) ... 9 more ... and so forth According to a PR[1] on the JaCoCo's issue tracker, this occurs because "Classes of JDK 10 EA b35 use a new classfile version number and so JaCoCo Agent 0.7.9 as well as agent from current build of master branch fail to start". This has been fixed as of JaCoCo 0.8.1, which also happens to be the latest release. We do not explicitly specify the version JaCoCo to use in our build.gradle file, and so the `jacoco` gradle plugin just uses its default, which happens to be 0.8.0[2] on Gradle 4.6 (the version we are using). This version of JaCoCo still has this bug, and so we get these errors. Fix this by upgrading to the latest version of Gradle (4.8.1). Since Gradle 4.7[3] the default JaCoCo plugin has been upgraded to version 0.8.1, and so upgrading to the latest version of Gradle will fix this problem and allow us to run tests on JDK 10. The Gradle wrapper upgrade was performed by running the command: ./gradlew wrapper --gradle-version 4.8.1 and then converting the line endings of gradlew.bat to unix to satisfy our travis line ending checks. [1] jacoco/jacoco#629 [2] gradle/gradle@8a09484 [3] https://docs.gradle.org/4.7/release-notes.html#default-jacoco-version-upgraded-to-0.8.1
With JDK 10, `./gradlew allTest` fails to run tests, instead spewing out the following errors on the console: Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:510) FATAL ERROR in native method: processing of -javaagent failed at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:522) Caused by: java.lang.RuntimeException: Class java/lang/UnknownError could not be instrumented. at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:139) at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:100) at org.jacoco.agent.rt.internal_290345e.PreMain.createRuntime(PreMain.java:55) at org.jacoco.agent.rt.internal_290345e.PreMain.premain(PreMain.java:47) ... 6 more Caused by: java.lang.NoSuchFieldException: $jacocoAccess at java.base/java.lang.Class.getField(Class.java:1958) at org.jacoco.agent.rt.internal_290345e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:137) ... 9 more ... and so forth According to a PR[1] on the JaCoCo's issue tracker, this occurs because "Classes of JDK 10 EA b35 use a new classfile version number and so JaCoCo Agent 0.7.9 as well as agent from current build of master branch fail to start". This has been fixed as of JaCoCo 0.8.1, which also happens to be the latest release. We do not explicitly specify the version JaCoCo to use in our build.gradle file, and so the `jacoco` gradle plugin just uses its default, which happens to be 0.8.0[2] on Gradle 4.6 (the version we are using). This version of JaCoCo still has this bug, and so we get these errors. Fix this by upgrading to the latest version of Gradle (4.8.1). Since Gradle 4.7[3] the default JaCoCo plugin has been upgraded to version 0.8.1, and so upgrading to the latest version of Gradle will fix this problem and allow us to run tests on JDK 10. The Gradle wrapper upgrade was performed by running the command: ./gradlew wrapper --gradle-version 4.8.1 and then converting the line endings of gradlew.bat to unix to satisfy our travis line ending checks. Also, update any references to the Gradle version we are using in the code base to 4.8.1. [1] jacoco/jacoco#629 [2] gradle/gradle@8a09484 [3] https://docs.gradle.org/4.7/release-notes.html#default-jacoco-version-upgraded-to-0.8.1
Classes of JDK 10 EA b35 use new classfile version number ( https://bugs.openjdk.java.net/browse/JDK-8188870 ) and so JaCoCo Agent 0.7.9 as well as agent from current build of master branch fail to start:
So to support JDK 10 we'll need to do similar workarounds that were done for JDK 9 in #406 and removed in #600 or wait for ASM release containing https://gitlab.ow2.org/asm/asm/merge_requests/74