NativeLibLoader - installLibraryFromResource - RuntimeImage
Steve Hruda
steve.hruda at gmail.com
Thu Jul 26 08:33:10 UTC 2018
Hi,
I created a custom runtime image (windows x64) for my JavaFX application
and used the OpenJFX 11-ea+19 maven artifacts.
I get the following exception if I try to execute my application:
Graphics Device initialization failed for : d3d, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing
QuantumRenderer: no suitable pipeline found
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:222)
at
javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
at
javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:263)
at
javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:157)
at
javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
at
javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
at
javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
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:564)
at
java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:941)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer:
no suitable pipeline found
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
at java.base/java.lang.Thread.run(Thread.java:844)
Exception in thread "main" java.lang.reflect.InvocationTargetException
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:564)
at
java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:941)
Caused by: java.lang.RuntimeException: No toolkit found
at
javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272)
at
javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:263)
at
javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:157)
at
javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
at
javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
at
javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
... 5 more
-Djavafx.verbose=true shows that JavaFX isn't able to load the native libs
from the javafx-graphics jar.
I debugged the NativeLibLoader and loadLibraryFromResource and
installLibraryFromResource will be executed which is ok. But the
*reallib *value for
all dll's is wrong because of the empty *libSuffix*.
e.g. the reallib value of *api-ms-win-core-console-l1-1-0* is
*/api-ms-win-core-console-l1-1-0* and not
*/api-ms-win-core-console-l1-1-0.dll*
Is it intentional that *libPrefix *& *libSuffix *will not be set in case of
the jrt protocol ?
https://github.com/javafxports/openjdk-jfx/blob/c168ab56accd7e74d53737bc0832495dbc318e52/modules/javafx.graphics/src/main/java/com/sun/glass/utils/NativeLibLoader.java#L308
https://github.com/javafxports/openjdkjfx/blob/c168ab56accd7e74d53737bc0832495dbc318e52/modules/javafx.graphics/src/main/java/com/sun/glass/utils/NativeLibLoader.java#L338
Best Regards,
Steve
More information about the openjfx-dev
mailing list