[jira] [Comment Edited] (GROOVY-8871) Long Constants Defined in Groovy 2.5.3 Under OpenJDK 11 Cause an IllegalAccessError
[ https://issues.apache.org/jira/browse/GROOVY-8871?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16679165#comment-16679165 ] Paul King edited comment on GROOVY-8871 at 11/8/18 10:13 AM: - This is to do with the {{targetCompatibility}} setting you have in your build file. Can you set that version to an earlier one while still running on JDK11? Also what happens when using primitive 'long'? was (Author: paulk): I am wondering if we are seeing the right error. Compiling and using your class under JDK11 and Groovy2.5.3 works fine in the GroovyConsole. I noticed in your build file you have sourceCompatibility and targetCompatibility set to JavaVersion.VERSION_11. We don't support that in 2.5.3 even though running is fine. What happens if you set those to JavaVersion.VERSION_1_10 but still run under JDK11 obviously? Also what happens when using primitive 'long'? > Long Constants Defined in Groovy 2.5.3 Under OpenJDK 11 Cause an > IllegalAccessError > --- > > Key: GROOVY-8871 > URL: https://issues.apache.org/jira/browse/GROOVY-8871 > Project: Groovy > Issue Type: Bug >Affects Versions: 2.5.3 > Environment: OpenJDK11 on MacOSX 10.14 and Debian Linux (through > docker) >Reporter: Kevin Brown >Priority: Blocker > Attachments: example-for-groovy-long-bug.zip > > > The following groovy code: > {code:java} > class SomeBadClass { > SomeBadClass() { > Long a = 1_457_366_400_000L > } > } > new SomeBadClass(){code} > causes the following exception to be thrown: > {code:java} > java.lang.IllegalAccessError: Update to static final field > com.example.SomeBadClass.$const$0 attempted from a different method > (__$swapInit) than the initializer method >at com.example.SomeBadClass.__$swapInit(SomeBadClass.groovy) >at com.example.SomeBadClass.(SomeBadClass.groovy) >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.newInstance(Constructor.java:490) >at > org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) >at > org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) >at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59) >at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:237) >at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:241) >at > com.example.SomeClassFailsTest_3.testSomething(SomeClassFailsTest_3.groovy:37) >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:566) >at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) >at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) >at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) >at > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) >at > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) >at > org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) >at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) >at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) >at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) >at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) >at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) >at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) >at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) >at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) >at org.junit.runners.ParentRunner.run(ParentRunner.java:363) >at org.junit.runners.Suite.runChild(Suite.java:128) >at org.junit.runners.Suite.runChild(Suite.java:27) >at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) >at
[jira] [Comment Edited] (GROOVY-8871) Long Constants Defined in Groovy 2.5.3 Under OpenJDK 11 Cause an IllegalAccessError
[ https://issues.apache.org/jira/browse/GROOVY-8871?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16680049#comment-16680049 ] Kevin Brown edited comment on GROOVY-8871 at 11/8/18 5:27 PM: -- [~paulk] When I set targetCompatibility to JavaVersion.VERSION_1_10 everything works fine while still running under JDK11 (both osx and linux/docker). Using the primitive long seems to have the same behavior: Doesn't work: {code} long doesntWork1 = 1_000L long doesntWork2 = 1_457_366_400_000L long doesntWork3 = 1_457_366_400_000 {code} Does work: {code} long doesWork1 = 1_000 long doesWork2 = new Long("145736640") {code} Another note: if you notice creating the long from the string seems to work and could be a viable workaround for now (it worked in my actual code). was (Author: silentkevin): [~paulk] When I set targetCompatibility to JavaVersion.VERSION_1_10 everything works fine while still running under JDK11 (both osx and linux/docker). Using the primitive long seems to have the same behavior: Doesn't work: {code} long doesntWork1 = 1_000L long doesntWork2 = 1_457_366_400_000L long doesntWork3 = 1_457_366_400_000 {code} Does work: {code} long doesWork1 = 1_000 long doesWork2 = new Long("145736640") {code} > Long Constants Defined in Groovy 2.5.3 Under OpenJDK 11 Cause an > IllegalAccessError > --- > > Key: GROOVY-8871 > URL: https://issues.apache.org/jira/browse/GROOVY-8871 > Project: Groovy > Issue Type: Bug >Affects Versions: 2.5.3 > Environment: OpenJDK11 on MacOSX 10.14 and Debian Linux (through > docker) >Reporter: Kevin Brown >Priority: Critical > Attachments: example-for-groovy-long-bug.zip > > > The following groovy code: > {code:java} > class SomeBadClass { > SomeBadClass() { > Long a = 1_457_366_400_000L > } > } > new SomeBadClass(){code} > causes the following exception to be thrown: > {code:java} > java.lang.IllegalAccessError: Update to static final field > com.example.SomeBadClass.$const$0 attempted from a different method > (__$swapInit) than the initializer method >at com.example.SomeBadClass.__$swapInit(SomeBadClass.groovy) >at com.example.SomeBadClass.(SomeBadClass.groovy) >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.newInstance(Constructor.java:490) >at > org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) >at > org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) >at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59) >at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:237) >at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:241) >at > com.example.SomeClassFailsTest_3.testSomething(SomeClassFailsTest_3.groovy:37) >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:566) >at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) >at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) >at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) >at > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) >at > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) >at > org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) >at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) >at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) >at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) >at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) >at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) >at