TestStaticJavaFX
1.0.0
Ceci est un projet où j'essayais de créer un binaire statique d'un projet Javafx en utilisant uniquement Graalvm
musl et zlib - Pour la configuration, lisez ces documents fournis par Graalvmmake et configure Important
Modifiez les chemins requis dans le fichier native.sh avant de l'exécuter.
mvn clean install à la racine du projet. Cela créera un pot et mettra le pot des modules requis dans le répertoire target/modules .native.sh qui invoquera l'image native pour construire un binaire statique.Lorsque j'essaie d'exécuter l' exécutable statique construit plus tôt, je rencontre l'erreur suivante?
Loading library prism_es2 from resource failed : java . lang.UnsatisfiedLinkError: Can't load library: /home/saptarshi-sarkar/.openjfx/cache/22-ea+11/amd64/libprism_es2.so
java . lang.UnsatisfiedLinkError: Can't load library: /home/saptarshi-sarkar/.openjfx/cache/22-ea+11/amd64/libprism_es2.so
at org . graalvm.nativeimage.builder/com.oracle.svm.core.jdk.NativeLibraries.loadLibraryAbsolute(NativeLibraries.java:105)
at java . [email protected]/java.lang.ClassLoader.loadLibrary(ClassLoader.java:114)
at java . [email protected]/java.lang.Runtime.load0(Runtime.java:852)
at java . [email protected]/java.lang.System.load(System.java:2030)
at javafx . graphics@22-ea/com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:220)
at javafx . graphics@22-ea/com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:200)
at javafx . graphics@22-ea/com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:142)
at javafx . graphics@22-ea/com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:58)
at javafx . graphics@22-ea/com.sun.prism.es2.ES2Pipeline.lambda$static$0(ES2Pipeline.java:63)
at java . [email protected]/java.security.AccessController.executePrivileged(AccessController.java:128)
at java . [email protected]/java.security.AccessController.doPrivileged(AccessController.java:319)
at javafx . graphics@22-ea/com.sun.prism.es2.ES2Pipeline.<clinit>(ES2Pipeline.java:52)
at java . [email protected]/java.lang.Class.ensureInitialized(DynamicHub.java:599)
at java . [email protected]/java.lang.Class.forName(DynamicHub.java:1396)
at java . [email protected]/java.lang.Class.forName(DynamicHub.java:1352)
at java . [email protected]/java.lang.Class.forName(DynamicHub.java:1346)
at javafx . graphics@22-ea/com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218)
at javafx . graphics@22-ea/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:92)
at javafx . graphics@22-ea/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java . [email protected]/java.lang.Thread.runWith(Thread.java:1583)
at java . [email protected]/java.lang.Thread.run(Thread.java:1570)
at org . graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:853)
at org . graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:829)
Graphics Device initialization failed for : es2 , sw
Error initializing QuantumRenderer : no suitable pipeline found
java . lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at javafx . graphics@22-ea/com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:283)
at javafx . graphics@22-ea/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:253)
at javafx . graphics@22-ea/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:263)
at javafx . graphics@22-ea/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:290)
at javafx . graphics@22-ea/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:162)
at javafx . graphics@22-ea/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:651)
at javafx . graphics@22-ea/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:671)
at javafx . graphics@22-ea/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
at java . [email protected]/java.lang.Thread.runWith(Thread.java:1583)
at java . [email protected]/java.lang.Thread.run(Thread.java:1570)
at org . graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:853)
at org . graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:829)
Caused by : java . lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at javafx . graphics@22-ea/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:95)
at javafx . graphics@22-ea/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
... 4 more
Exception in thread "main" java . lang.RuntimeException: No toolkit found
at javafx . graphics@22-ea/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:275)
at javafx . graphics@22-ea/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:290)
at javafx . graphics@22-ea/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:162)
at javafx . graphics@22-ea/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:651)
at javafx . graphics@22-ea/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:671)
at javafx . graphics@22-ea/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
at java . [email protected]/java.lang.Thread.runWith(Thread.java:1583)
at java . [email protected]/java.lang.Thread.run(Thread.java:1570)
at org . graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:853)
at org . graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:829)Je suis toujours à la recherche d'une solution réalisable au problème ci-dessus. Je connais le plugin Gluonfx Maven mais il ne génère pas d' exécutable statique .
Note
Si quelqu'un a découvert une solution, vous pouvez ouvrir un problème / discussion ou une demande de traction pour résoudre l'erreur en mentionnant les modifications requises. Ce serait très utile pour la communauté ?.