Graal: [native-image] Code using JavaFX fails to generate native image.

Created on 21 Apr 2018  Â·  6Comments  Â·  Source: oracle/graal

When attempting to generate a native image using code that uses JavaFX, an error occurs. I can't exactly understand the root cause given the error message, but I can give the steps to reproduce it.

1) Create a file HelloWorld.java, containing the example in Example 1-1 at https://docs.oracle.com/javafx/2/get_started/hello_world.htm
2) Using the Graal toolchain (in this case, graalvm-1.0.0-rc1 from Oracle download was used, on MacOS), compile the Java file: javac HelloWorld.java
3) Run the native image compiler: native-image -cp . helloworld.HelloWorld

The following error is then shown:

Build on Server(pid: 19186, port: 26681)
   classlist:     120.71 ms
       (cap):   1,658.04 ms
       setup:   1,967.81 ms
    analysis:   2,664.79 ms
error: unsupported features in 6 methods
Detailed message:
Error: Error loading a referenced type: java.lang.NoClassDefFoundError: Could not initialize class javafx.stage.Screen
Trace:
    at parsing com.sun.javafx.tk.quantum.QuantumToolkit.initSceneGraph(QuantumToolkit.java:298)
Call path from entry point to com.sun.javafx.tk.quantum.QuantumToolkit.initSceneGraph():
    at com.sun.javafx.tk.quantum.QuantumToolkit.initSceneGraph(QuantumToolkit.java:298)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runToolkit(QuantumToolkit.java:340)
    at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$startup$402(QuantumToolkit.java:257)
    at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$611/1642062728.run(Unknown Source)
    at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeHooks(JavaMainWrapper.java:105)
    at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeStartupHooks(JavaMainWrapper.java:91)
    at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:198)
    at Lcom/oracle/svm/core/code/CEntryPointCallStubs;.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
Original exception that caused the problem: java.lang.NoClassDefFoundError: Could not initialize class javafx.stage.Screen
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at jdk.vm.ci.hotspot.HotSpotConstantPool.loadReferencedType(HotSpotConstantPool.java:695)
    at com.oracle.graal.pointsto.infrastructure.WrappedConstantPool.loadReferencedType(WrappedConstantPool.java:58)
    at org.graalvm.compiler.java.BytecodeParser.maybeEagerlyResolve(BytecodeParser.java:3847)
    at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.maybeEagerlyResolve(SharedGraphBuilderPhase.java:102)
    at org.graalvm.compiler.java.BytecodeParser.lookupMethod(BytecodeParser.java:3801)
    at org.graalvm.compiler.java.BytecodeParser.genInvokeStatic(BytecodeParser.java:1380)
    at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.genInvokeStatic(SharedGraphBuilderPhase.java:171)
    at org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:4677)
    at org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3065)
    at org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:2886)
    at org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:880)
    at org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:774)
    at org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:93)
    at org.graalvm.compiler.phases.Phase.run(Phase.java:47)
    at org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:195)
    at org.graalvm.compiler.phases.Phase.apply(Phase.java:40)
    at org.graalvm.compiler.phases.Phase.apply(Phase.java:36)
    at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:195)
    at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:319)
    at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:308)
    at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:298)
    at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:105)
    at com.oracle.graal.pointsto.flow.StaticInvokeTypeFlow.update(InvokeTypeFlow.java:344)
    at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:498)
    at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:172)
    at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error: Error loading a referenced type: java.lang.NoClassDefFoundError: Could not initialize class javafx.stage.Screen
Trace:
    at parsing javafx.stage.Window.<init>(Window.java:1209)
Call path from entry point to javafx.stage.Window.<init>():
    at javafx.stage.Window.<init>(Window.java:155)
    at javafx.stage.Stage.<init>(Stage.java:239)
    at javafx.stage.Stage.<init>(Stage.java:227)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$159(LauncherImpl.java:783)
    at com.sun.javafx.application.LauncherImpl$$Lambda$546/1165191125.run(Unknown Source)
    at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeHooks(JavaMainWrapper.java:105)
    at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeStartupHooks(JavaMainWrapper.java:91)
    at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:198)
    at Lcom/oracle/svm/core/code/CEntryPointCallStubs;.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
Original exception that caused the problem: java.lang.NoClassDefFoundError: Could not initialize class javafx.stage.Screen
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at jdk.vm.ci.hotspot.HotSpotConstantPool.loadReferencedType(HotSpotConstantPool.java:695)
    at com.oracle.graal.pointsto.infrastructure.WrappedConstantPool.loadReferencedType(WrappedConstantPool.java:58)
    at org.graalvm.compiler.java.BytecodeParser.maybeEagerlyResolve(BytecodeParser.java:3847)
    at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.maybeEagerlyResolve(SharedGraphBuilderPhase.java:102)
    at org.graalvm.compiler.java.BytecodeParser.lookupMethod(BytecodeParser.java:3801)
    at org.graalvm.compiler.java.BytecodeParser.genInvokeStatic(BytecodeParser.java:1380)
    at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.genInvokeStatic(SharedGraphBuilderPhase.java:171)
    at org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:4677)
    at org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3065)
    at org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:2886)
    at org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:880)
    at org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:774)
    at org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:93)
    at org.graalvm.compiler.phases.Phase.run(Phase.java:47)
    at org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:195)
    at org.graalvm.compiler.phases.Phase.apply(Phase.java:40)
    at org.graalvm.compiler.phases.Phase.apply(Phase.java:36)
    at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:195)
    at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:319)
    at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:308)
    at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:298)
    at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:105)
    at com.oracle.graal.pointsto.flow.SpecialInvokeTypeFlow.onObservedUpdate(InvokeTypeFlow.java:419)
    at com.oracle.graal.pointsto.flow.TypeFlow.notifyObservers(TypeFlow.java:345)
    at com.oracle.graal.pointsto.flow.TypeFlow.update(TypeFlow.java:387)
    at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:498)
    at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:172)
    at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error: Must not have a started Thread in the image heap.
Trace:  object com.sun.javafx.tk.quantum.QuantumRenderer
    object java.util.concurrent.atomic.AtomicReference
    method com.sun.javafx.tk.quantum.QuantumRenderer.getInstance()
Call path from entry point to com.sun.javafx.tk.quantum.QuantumRenderer.getInstance():
    at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:258)
    at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:221)
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:248)
    at com.sun.javafx.application.PlatformImpl.lambda$tkExit$177(PlatformImpl.java:450)
    at com.sun.javafx.application.PlatformImpl$$Lambda$555/2063860391.run(Unknown Source)
    at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeHooks(JavaMainWrapper.java:105)
    at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeStartupHooks(JavaMainWrapper.java:91)
    at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:198)
    at Lcom/oracle/svm/core/code/CEntryPointCallStubs;.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
Error: Must not have a started Thread in the image heap.
Trace:  field com.sun.prism.es2.ES2Pipeline.creator
Error: Must not have a started Thread in the image heap.
Trace:  object java.util.concurrent.ThreadPoolExecutor$Worker
    object java.util.HashMap$Node
    object java.util.HashMap$Node[]
    object java.util.HashMap
    object java.util.HashSet
    object com.sun.javafx.tk.quantum.QuantumRenderer
    object java.util.concurrent.atomic.AtomicReference
    method com.sun.javafx.tk.quantum.QuantumRenderer.getInstance()
Call path from entry point to com.sun.javafx.tk.quantum.QuantumRenderer.getInstance():
    at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:258)
    at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:221)
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:248)
    at com.sun.javafx.application.PlatformImpl.lambda$tkExit$177(PlatformImpl.java:450)
    at com.sun.javafx.application.PlatformImpl$$Lambda$555/2063860391.run(Unknown Source)
    at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeHooks(JavaMainWrapper.java:105)
    at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeStartupHooks(JavaMainWrapper.java:91)
    at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:198)
    at Lcom/oracle/svm/core/code/CEntryPointCallStubs;.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
Error: Must not have a started Thread in the image heap.
Trace:  object java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
    object java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject
    object java.util.concurrent.LinkedBlockingQueue
    object com.sun.javafx.tk.quantum.QuantumRenderer
    object java.util.concurrent.atomic.AtomicReference
    method com.sun.javafx.tk.quantum.QuantumRenderer.getInstance()
Call path from entry point to com.sun.javafx.tk.quantum.QuantumRenderer.getInstance():
    at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:258)
    at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:221)
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:248)
    at com.sun.javafx.application.PlatformImpl.lambda$tkExit$177(PlatformImpl.java:450)
    at com.sun.javafx.application.PlatformImpl$$Lambda$555/2063860391.run(Unknown Source)
    at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeHooks(JavaMainWrapper.java:105)
    at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeStartupHooks(JavaMainWrapper.java:91)
    at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:198)
    at Lcom/oracle/svm/core/code/CEntryPointCallStubs;.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)

Error: Processing image build request failed

If you need more information, please let me know. Thanks.

native-image

Most helpful comment

@rhencke thank you for your report. He haven't tried running JavaFX apps so far. It looks like they will need a bit more work to run on SubstrateVM.
Related issue: https://github.com/oracle/graal/issues/403.

All 6 comments

no

Op 21 apr. 2018 23:05 schreef "Robert Hencke" notifications@github.com:

When attempting to generate a native image using code that uses JavaFX, an
error occurs. I can't exactly understand the root cause given the error
message, but I can give the steps to reproduce it.

  1. Create a file HelloWorld.java, containing the example in Example 1-1
    at https://docs.oracle.com/javafx/2/get_started/hello_world.htm
  2. Using the Graal toolchain (in this case, graalvm-1.0.0-rc1 from
    Oracle download was used, on MacOS), compile the Java file: javac
    HelloWorld.java
  3. Run the native image compiler: native-image -cp .
    helloworld.HelloWorld

The following error is then shown:

Build on Server(pid: 19186, port: 26681)
classlist: 120.71 ms
(cap): 1,658.04 ms
setup: 1,967.81 ms
analysis: 2,664.79 ms
error: unsupported features in 6 methods
Detailed message:
Error: Error loading a referenced type:
java.lang.NoClassDefFoundError: Could not initialize class
javafx.stage.Screen
Trace:
at parsing com.sun.javafx.tk.quantum.QuantumToolkit.initSceneGraph(QuantumToolkit.java:298)
Call path from entry point to
com.sun.javafx.tk.quantum.QuantumToolkit.initSceneGraph():
at com.sun.javafx.tk.quantum.QuantumToolkit.initSceneGraph(QuantumToolkit.java:298)
at com.sun.javafx.tk.quantum.QuantumToolkit.runToolkit(QuantumToolkit.java:340)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$startup$402(QuantumToolkit.java:257)
at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$611/1642062728.run(Unknown
Source)
at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeHooks(JavaMainWrapper.java:105)
at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeStartupHooks(JavaMainWrapper.java:91)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:198)
at Lcom/oracle/svm/core/code/CEntryPointCallStubs;.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
Original exception that caused the problem:
java.lang.NoClassDefFoundError: Could not initialize class
javafx.stage.Screen
at sun.misc.Unsafe.ensureClassInitialized(Native Method)
at jdk.vm.ci.hotspot.HotSpotConstantPool.loadReferencedType(HotSpotConstantPool.java:695)
at com.oracle.graal.pointsto.infrastructure.WrappedConstantPool.loadReferencedType(WrappedConstantPool.java:58)
at org.graalvm.compiler.java.BytecodeParser.maybeEagerlyResolve(BytecodeParser.java:3847)
at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.maybeEagerlyResolve(SharedGraphBuilderPhase.java:102)
at org.graalvm.compiler.java.BytecodeParser.lookupMethod(BytecodeParser.java:3801)
at org.graalvm.compiler.java.BytecodeParser.genInvokeStatic(BytecodeParser.java:1380)
at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.genInvokeStatic(SharedGraphBuilderPhase.java:171)
at org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:4677)
at org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3065)
at org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:2886)
at org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:880)
at org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:774)
at org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:93)
at org.graalvm.compiler.phases.Phase.run(Phase.java:47)
at org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:195)
at org.graalvm.compiler.phases.Phase.apply(Phase.java:40)
at org.graalvm.compiler.phases.Phase.apply(Phase.java:36)
at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:195)
at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:319)
at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:308)
at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:298)
at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:105)
at com.oracle.graal.pointsto.flow.StaticInvokeTypeFlow.update(InvokeTypeFlow.java:344)
at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:498)
at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:172)
at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error: Error loading a referenced type:
java.lang.NoClassDefFoundError: Could not initialize class
javafx.stage.Screen
Trace:
at parsing javafx.stage.Window.(Window.java:1209)
Call path from entry point to javafx.stage.Window.():
at javafx.stage.Window.(Window.java:155)
at javafx.stage.Stage.(Stage.java:239)
at javafx.stage.Stage.(Stage.java:227)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$159(LauncherImpl.java:783)
at com.sun.javafx.application.LauncherImpl$$Lambda$546/1165191125.run(Unknown
Source)
at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeHooks(JavaMainWrapper.java:105)
at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeStartupHooks(JavaMainWrapper.java:91)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:198)
at Lcom/oracle/svm/core/code/CEntryPointCallStubs;.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
Original exception that caused the problem:
java.lang.NoClassDefFoundError: Could not initialize class
javafx.stage.Screen
at sun.misc.Unsafe.ensureClassInitialized(Native Method)
at jdk.vm.ci.hotspot.HotSpotConstantPool.loadReferencedType(HotSpotConstantPool.java:695)
at com.oracle.graal.pointsto.infrastructure.WrappedConstantPool.loadReferencedType(WrappedConstantPool.java:58)
at org.graalvm.compiler.java.BytecodeParser.maybeEagerlyResolve(BytecodeParser.java:3847)
at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.maybeEagerlyResolve(SharedGraphBuilderPhase.java:102)
at org.graalvm.compiler.java.BytecodeParser.lookupMethod(BytecodeParser.java:3801)
at org.graalvm.compiler.java.BytecodeParser.genInvokeStatic(BytecodeParser.java:1380)
at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.genInvokeStatic(SharedGraphBuilderPhase.java:171)
at org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:4677)
at org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3065)
at org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:2886)
at org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:880)
at org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:774)
at org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:93)
at org.graalvm.compiler.phases.Phase.run(Phase.java:47)
at org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:195)
at org.graalvm.compiler.phases.Phase.apply(Phase.java:40)
at org.graalvm.compiler.phases.Phase.apply(Phase.java:36)
at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:195)
at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:319)
at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:308)
at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:298)
at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:105)
at com.oracle.graal.pointsto.flow.SpecialInvokeTypeFlow.onObservedUpdate(InvokeTypeFlow.java:419)
at com.oracle.graal.pointsto.flow.TypeFlow.notifyObservers(TypeFlow.java:345)
at com.oracle.graal.pointsto.flow.TypeFlow.update(TypeFlow.java:387)
at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:498)
at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:172)
at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error: Must not have a started Thread in the image heap.
Trace: object com.sun.javafx.tk.quantum.QuantumRenderer
object java.util.concurrent.atomic.AtomicReference
method com.sun.javafx.tk.quantum.QuantumRenderer.getInstance()
Call path from entry point to
com.sun.javafx.tk.quantum.QuantumRenderer.getInstance():
at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:258)
at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:221)
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:248)
at com.sun.javafx.application.PlatformImpl.lambda$tkExit$177(PlatformImpl.java:450)
at com.sun.javafx.application.PlatformImpl$$Lambda$555/2063860391.run(Unknown
Source)
at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeHooks(JavaMainWrapper.java:105)
at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeStartupHooks(JavaMainWrapper.java:91)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:198)
at Lcom/oracle/svm/core/code/CEntryPointCallStubs;.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
Error: Must not have a started Thread in the image heap.
Trace: field com.sun.prism.es2.ES2Pipeline.creator
Error: Must not have a started Thread in the image heap.
Trace: object java.util.concurrent.ThreadPoolExecutor$Worker
object java.util.HashMap$Node
object java.util.HashMap$Node[]
object java.util.HashMap
object java.util.HashSet
object com.sun.javafx.tk.quantum.QuantumRenderer
object java.util.concurrent.atomic.AtomicReference
method com.sun.javafx.tk.quantum.QuantumRenderer.getInstance()
Call path from entry point to
com.sun.javafx.tk.quantum.QuantumRenderer.getInstance():
at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:258)
at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:221)
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:248)
at com.sun.javafx.application.PlatformImpl.lambda$tkExit$177(PlatformImpl.java:450)
at com.sun.javafx.application.PlatformImpl$$Lambda$555/2063860391.run(Unknown
Source)
at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeHooks(JavaMainWrapper.java:105)
at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeStartupHooks(JavaMainWrapper.java:91)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:198)
at Lcom/oracle/svm/core/code/CEntryPointCallStubs;.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
Error: Must not have a started Thread in the image heap.
Trace: object java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
object java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject
object java.util.concurrent.LinkedBlockingQueue
object com.sun.javafx.tk.quantum.QuantumRenderer
object java.util.concurrent.atomic.AtomicReference
method com.sun.javafx.tk.quantum.QuantumRenderer.getInstance()
Call path from entry point to
com.sun.javafx.tk.quantum.QuantumRenderer.getInstance():
at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:258)
at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:221)
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:248)
at com.sun.javafx.application.PlatformImpl.lambda$tkExit$177(PlatformImpl.java:450)
at com.sun.javafx.application.PlatformImpl$$Lambda$555/2063860391.run(Unknown
Source)
at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeHooks(JavaMainWrapper.java:105)
at com.oracle.svm.core.JavaMainWrapper$JavaMainSupport.executeStartupHooks(JavaMainWrapper.java:91)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:198)
at Lcom/oracle/svm/core/code/CEntryPointCallStubs;.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)

Error: Processing image build request failed

If you need more information, please let me know. Thanks.

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/oracle/graal/issues/365, or mute the thread
https://github.com/notifications/unsubscribe-auth/AVlgid1R7XDJGBapJK13YSxqX4p-E6YGks5tq57_gaJpZM4TenfJ
.

@rhencke thank you for your report. He haven't tried running JavaFX apps so far. It looks like they will need a bit more work to run on SubstrateVM.
Related issue: https://github.com/oracle/graal/issues/403.

For cross refer #358

Managed to make it build, but doesn't run properly: https://github.com/oracle/graal/issues/994

Are there any plans to look into javafx ? just wondering footprint that it would have, would it be useful to develop small desktop apps.

As reported by https://github.com/oracle/graal/issues/403#issuecomment-559213856 it is now possible to create native executables for JavaFX applications on Linux, MacOS and iOS. I am closing this issue, please open a new one if you run into further issues.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

himanshumps picture himanshumps  Â·  3Comments

guaporocco picture guaporocco  Â·  3Comments

helloguo picture helloguo  Â·  3Comments

ilopmar picture ilopmar  Â·  3Comments

sxend picture sxend  Â·  3Comments