quarkus: graal-js does not work when using quarkusDev

Describe the bug If in my code i try to initialize a jscontext: 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:

  1. Create a project using https://code.quarkus.io/
  2. Add dependencies to graal-js
<dependency>
      <groupId>org.graalvm.js</groupId>
      <artifactId>js</artifactId>
      <version>19.3.1</version>
</dependency>
  1. 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 or ver: 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 or gradlew --version): Apache Maven 3.6.3

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 4
  • Comments: 16 (6 by maintainers)

Most upvoted comments

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.