quarkus: graal-js does not work when using quarkusDev
Describe the bug
If in my code i try to initialize a js
context: Context.create("js")
i get this error
java.lang.IllegalAccessError: superclass access check failed: class com.oracle.truffle.polyglot.PolyglotImpl (in unnamed module @0xa18e355) cannot access class org.graalvm.polyglot.impl.AbstractPolyglotImpl (in module org.graalvm.sdk) because module org.graalvm.sdk does not export org.graalvm.polyglot.impl to unnamed module @0xa18e355
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:365)
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:323)
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:371)
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:323)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1209)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1220)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1264)
at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1299)
at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1384)
at org.graalvm.sdk/org.graalvm.polyglot.Engine$1.searchServiceLoader(Engine.java:707)
at org.graalvm.sdk/org.graalvm.polyglot.Engine$1.run(Engine.java:694)
at org.graalvm.sdk/org.graalvm.polyglot.Engine$1.run(Engine.java:668)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at org.graalvm.sdk/org.graalvm.polyglot.Engine.initEngineImpl(Engine.java:668)
at org.graalvm.sdk/org.graalvm.polyglot.Engine.access$000(Engine.java:103)
at org.graalvm.sdk/org.graalvm.polyglot.Engine$ImplHolder.<clinit>(Engine.java:112)
at org.graalvm.sdk/org.graalvm.polyglot.Engine.getImpl(Engine.java:264)
at org.graalvm.sdk/org.graalvm.polyglot.Engine$Builder.build(Engine.java:502)
at org.graalvm.sdk/org.graalvm.polyglot.Context$Builder.build(Context.java:1444)
at org.graalvm.sdk/org.graalvm.polyglot.Context.create(Context.java:709)
at io.abner.quarkus.ExampleResource.<init>(ExampleResource.kt:13)
at io.abner.quarkus.ExampleResource_Bean.create(ExampleResource_Bean.zig:127)
at io.abner.quarkus.ExampleResource_Bean.create(ExampleResource_Bean.zig:142)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:79)
at io.quarkus.arc.impl.ComputingCache$CacheFunction.lambda$apply$0(ComputingCache.java:99)
at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
at io.quarkus.arc.impl.ComputingCache.getValue(ComputingCache.java:41)
at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:25)
at io.abner.quarkus.ExampleResource_Bean.get(ExampleResource_Bean.zig:174)
at io.abner.quarkus.ExampleResource_Bean.get(ExampleResource_Bean.zig:190)
at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:380)
at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:393)
at io.quarkus.arc.impl.ArcContainerImpl$1.get(ArcContainerImpl.java:244)
at io.quarkus.arc.impl.ArcContainerImpl$1.get(ArcContainerImpl.java:241)
at io.quarkus.arc.runtime.ArcRecorder$2$1.create(ArcRecorder.java:84)
at io.quarkus.resteasy.common.runtime.QuarkusConstructorInjector.construct(QuarkusConstructorInjector.java:54)
at org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.createResource(POJOResourceFactory.java:70)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:368)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:67)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:488)
at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:259)
at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:160)
at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:362)
at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:163)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:245)
at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73)
at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:132)
at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.access$000(VertxRequestHandler.java:37)
at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:94)
at io.quarkus.runtime.CleanableExecutor$CleaningRunnable.run(CleanableExecutor.java:231)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
at java.base/java.lang.Thread.run(Thread.java:834)
at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Expected behavior
Expected to work just fine, as it works if i do generate a jar and runs from it.
Native image works all well. Of course, if i add quarkus.native.additional-build-args =--language:js
to application.properties
Actual behavior*
It fails as described in the bug description. java.lang.IllegalAccessError: superclass access check failed ...
To Reproduce Steps to reproduce the behavior:
- Create a project using https://code.quarkus.io/
- Add dependencies to graal-js
<dependency>
<groupId>org.graalvm.js</groupId>
<artifactId>js</artifactId>
<version>19.3.1</version>
</dependency>
- Configuration
# Add your application.properties here, if applicable.
quarkus.native.additional-build-args =--language:js
Environment (please complete the following information):
- Output of
uname -a
orver
: Ubuntu 19.10 - Output of
java -version
: openjdk version “11.0.6” 2020-01-14 - GraalVM version (if different from Java): OpenJDK Runtime Environment GraalVM CE 19.3.1 (build 11.0.6+9-jvmci-19.3-b07)
- Quarkus version or git rev: 1.4.2.Final and 1.5.0.CR1
- Build tool (ie. output of
mvnw --version
orgradlew --version
): Apache Maven 3.6.3
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Reactions: 4
- Comments: 16 (6 by maintainers)
like mentionned in another issue (link below) It’s now working.
https://github.com/quarkusio/quarkus/issues/8035#issuecomment-733047226
with quarkus 1.9.0.Final and Graal VM 20.2.0
@frank-dspeed I think that with a good configuration, Quarkus can do the job even for a big project, and maybe better than others. Especially for building a native image
Hi,
I’m having the same problem trying to run a R script. My workaround was to use:
1.
quarkus.native.additional-build-args =--language:R
2.mvn package
3.java -jar target/xxxxx-SNAPSHOT-runner.jar
I couldn’t make it work with quarkus dev mode. I’m with java 11 on graalvm 20.