History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: QB-3979
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Unassigned
Reporter: U. Artie Eoff
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
QuickBuild

java.lang.reflect.InaccessibleObjectException

Created: 02/Jun/23 01:09 PM   Updated: 03/Jun/23 01:19 AM
Component/s: None
Affects Version/s: 13.0.18
Fix Version/s: 13.0.21

Original Estimate: Unknown Remaining Estimate: Unknown Time Spent: Unknown
Environment: Ubuntu Jammy


 Description  « Hide
We have a groovy script step in QB configuration like:

   groovy:
   import java.io.File;
   new File(configuration.workspaceDir, "changes.html").withWriter('utf-8') { writer ->
     writer.writeLine "<html><body><table>";
     ...
   }

It works fine since OpenJDK 11. However, after upgrade to OpenJDK 19, groovy script in QB throws exception:

java.lang.reflect.InaccessibleObjectException: Unable to make java.util.stream.ReferencePipeline$Head(java.util.function.Supplier,int,boolean) accessible: module java.base does not "opens java.util.stream" to unnamed module @c91cdc2
    at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:387)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:363)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:311)
    at java.base/java.lang.reflect.Constructor.checkCanSetAccessible(Constructor.java:192)
    at java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:185)
    at org.codehaus.groovy.reflection.CachedConstructor$1.run(CachedConstructor.java:41)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
    at org.codehaus.groovy.reflection.CachedConstructor.<init>(CachedConstructor.java:39)
    at org.codehaus.groovy.reflection.CachedClass$2.initValue(CachedClass.java:74)
    at org.codehaus.groovy.reflection.CachedClass$2.initValue(CachedClass.java:64)
    at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46)
    at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33)
    at org.codehaus.groovy.reflection.CachedClass.getConstructors(CachedClass.java:258)
    at groovy.lang.MetaClassImpl.<init>(MetaClassImpl.java:187)
    at groovy.lang.MetaClassImpl.<init>(MetaClassImpl.java:191)
    at groovy.lang.MetaClassRegistry$MetaClassCreationHandle.createNormalMetaClass(MetaClassRegistry.java:149)
    at groovy.lang.MetaClassRegistry$MetaClassCreationHandle.createWithCustomLookup(MetaClassRegistry.java:139)
    at groovy.lang.MetaClassRegistry$MetaClassCreationHandle.create(MetaClassRegistry.java:122)
    at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:165)
    at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:195)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:231)
    at org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:747)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:109)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:150)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at script16856119001691618345306$_run_closure1.doCall(script16856119001691618345306.groovy:35)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:903)
    at groovy.lang.Closure.call(Closure.java:415)
    at groovy.lang.Closure.call(Closure.java:428)
    at org.codehaus.groovy.runtime.DefaultGroovyMethods.withWriter(DefaultGroovyMethods.java:17374)
    at org.codehaus.groovy.runtime.DefaultGroovyMethods.withWriter(DefaultGroovyMethods.java:17245)
    at org.codehaus.groovy.runtime.dgm$959.invoke(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
    at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
    at script16856119001691618345306.run(script16856119001691618345306.groovy:30)
    at com.pmease.quickbuild.plugin.basis.BasisPlugin$33.evaluate(BasisPlugin.java:391)
    at com.pmease.quickbuild.DefaultScriptEngine.evaluate(DefaultScriptEngine.java:316)
    at com.pmease.quickbuild.DefaultScriptEngine.evaluate(DefaultScriptEngine.java:75)
    at com.pmease.quickbuild.plugin.basis.ScriptStep.run(ScriptStep.java:86)
    at com.pmease.quickbuild.plugin.basis.ScriptStep$$EnhancerByCGLIB$$489c487d.CGLIB$run$0(<generated>)
    at com.pmease.quickbuild.plugin.basis.ScriptStep$$EnhancerByCGLIB$$489c487d$$FastClassByCGLIB$$13e8a2fa.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at com.pmease.quickbuild.DefaultScriptEngine$Interpolator.intercept(DefaultScriptEngine.java:267)
    at com.pmease.quickbuild.plugin.basis.ScriptStep$$EnhancerByCGLIB$$489c487d.run(<generated>)
    at com.pmease.quickbuild.stepsupport.Step.doExecute(Step.java:677)
    at com.pmease.quickbuild.stepsupport.Step.execute(Step.java:577)
    at com.pmease.quickbuild.stepsupport.StepExecutionJob.executeStepAwareJob(StepExecutionJob.java:31)
    at com.pmease.quickbuild.stepsupport.StepAwareJob.executeBuildAwareJob(StepAwareJob.java:56)
    at com.pmease.quickbuild.BuildAwareJob.execute(BuildAwareJob.java:77)
    at com.pmease.quickbuild.grid.GridJob.run(GridJob.java:131)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1589)

The same issue also happens when upgrading to OpenJDK 17

We are able to workaround the issue by adding the following to the quickbuidl/conf/wrapper.conf file:

  wrapper.java.additional.35=--add-opens=java.base/java.util.stream=ALL-UNNAMED

...however, this modification is inconvenient and potentially error prone since we automate QB deployment.


 All   Comments   Work Log   Change History      Sort Order:
Change by Steve Luo [03/Jun/23 12:46 AM]
Field Original Value New Value
Status Open [ 1 ] Resolved [ 5 ]
Assignee Robin Shen [ robinshine ]
Resolution Fixed [ 1 ]

Change by Steve Luo [03/Jun/23 12:46 AM]
Fix Version/s 13.0.21 [ 12222 ]