substrate icon indicating copy to clipboard operation
substrate copied to clipboard

Build Static Binary?

Open nu11ptr opened this issue 3 years ago • 3 comments

After building a JavaFX HelloWorld program I was surprised to see a huge number of required dynamic libraries using ldd on Linux (below). This would pose major issues for any non-source redistribution so I attempted to add the "--static" and "--libc=musl" options to native-image which yielded:

Error: Cannot pass both option: --shared and --static

Apparently Gluon Substrate passes in it's own large number of options and one of them is to use shared libs. Is there a way currently to build a static binary? If not, is this something that will be added? Thx

scott@saruman:~/src/scala/nativetest/build/client/x86_64-linux$ ldd ./nativetest 
        linux-vdso.so.1 (0x00007ffe08d94000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ffa2df68000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ffa2dd64000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ffa2d9db000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ffa2d7bc000)
        libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007ffa2d530000)
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007ffa2d1f8000)
        libgtk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007ffa2c8f0000)
        libgdk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007ffa2c5fa000)
        libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007ffa2c3ad000)
        libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007ffa2c090000)
        libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007ffa2be6c000)
        libgio-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007ffa2bacd000)
        libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007ffa2b879000)
        libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007ffa2b562000)
        libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007ffa2b2ae000)
        libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007ffa2b098000)
        libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007ffa2ae96000)
        libXtst.so.6 => /usr/lib/x86_64-linux-gnu/libXtst.so.6 (0x00007ffa2ac90000)
        libavcodec.so.57 => /usr/lib/x86_64-linux-gnu/libavcodec.so.57 (0x00007ffa2956c000)
        libavformat.so.57 => /usr/lib/x86_64-linux-gnu/libavformat.so.57 (0x00007ffa29111000)
        libavutil.so.55 => /usr/lib/x86_64-linux-gnu/libavutil.so.55 (0x00007ffa28e84000)
        libasound.so.2 => /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007ffa28b7d000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ffa287df000)
        libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007ffa285db000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ffa283c3000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ffa27fd2000)
        /lib64/ld-linux-x86-64.so.2 (0x00007ffa3250a000)
        libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007ffa27da1000)
        libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007ffa27aeb000)
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007ffa278c3000)
        libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007ffa276b6000)
        libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007ffa274a6000)
        libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007ffa272a0000)
        libcairo-gobject.so.2 => /usr/lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007ffa27097000)
        libatk-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007ffa26e71000)
        libatk-bridge-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007ffa26c40000)
        libepoxy.so.0 => /usr/lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007ffa2693f000)
        libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007ffa266fa000)
        libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007ffa264f7000)
        libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007ffa262ec000)
        libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007ffa260e2000)
        libXcomposite.so.1 => /usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007ffa25edf000)
        libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007ffa25cdc000)
        libxkbcommon.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007ffa25a9d000)
        libwayland-cursor.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007ffa25895000)
        libwayland-egl.so.1 => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007ffa25693000)
        libwayland-client.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007ffa25484000)
        libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007ffa25272000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ffa2506a000)
        libthai.so.0 => /usr/lib/x86_64-linux-gnu/libthai.so.0 (0x00007ffa24e61000)
        libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007ffa24bbc000)
        libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007ffa2498a000)
        libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007ffa24787000)
        libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007ffa2457a000)
        libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007ffa24370000)
        libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007ffa24148000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007ffa23f2e000)
        libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007ffa23cda000)
        libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007ffa23ad2000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ffa23860000)
        libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007ffa235c2000)
        libswresample.so.2 => /usr/lib/x86_64-linux-gnu/libswresample.so.2 (0x00007ffa233a3000)
        libwebp.so.6 => /usr/lib/x86_64-linux-gnu/libwebp.so.6 (0x00007ffa2313a000)
        libcrystalhd.so.3 => /usr/lib/x86_64-linux-gnu/libcrystalhd.so.3 (0x00007ffa22f1f000)
        libva.so.2 => /usr/lib/x86_64-linux-gnu/libva.so.2 (0x00007ffa22cfe000)
        libzvbi.so.0 => /usr/lib/x86_64-linux-gnu/libzvbi.so.0 (0x00007ffa22a73000)
        libxvidcore.so.4 => /usr/lib/x86_64-linux-gnu/libxvidcore.so.4 (0x00007ffa22762000)
        libx265.so.146 => /usr/lib/x86_64-linux-gnu/libx265.so.146 (0x00007ffa21ae1000)
        libx264.so.152 => /usr/lib/x86_64-linux-gnu/libx264.so.152 (0x00007ffa2173c000)
        libwebpmux.so.3 => /usr/lib/x86_64-linux-gnu/libwebpmux.so.3 (0x00007ffa21532000)
        libwavpack.so.1 => /usr/lib/x86_64-linux-gnu/libwavpack.so.1 (0x00007ffa21308000)
        libvpx.so.5 => /usr/lib/x86_64-linux-gnu/libvpx.so.5 (0x00007ffa20ebc000)
        libvorbisenc.so.2 => /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2 (0x00007ffa20c13000)
        libvorbis.so.0 => /usr/lib/x86_64-linux-gnu/libvorbis.so.0 (0x00007ffa209e8000)
        libvo-amrwbenc.so.0 => /usr/lib/x86_64-linux-gnu/libvo-amrwbenc.so.0 (0x00007ffa207ce000)
        libtwolame.so.0 => /usr/lib/x86_64-linux-gnu/libtwolame.so.0 (0x00007ffa205ab000)
        libtheoraenc.so.1 => /usr/lib/x86_64-linux-gnu/libtheoraenc.so.1 (0x00007ffa2036c000)
        libtheoradec.so.1 => /usr/lib/x86_64-linux-gnu/libtheoradec.so.1 (0x00007ffa2014e000)
        libspeex.so.1 => /usr/lib/x86_64-linux-gnu/libspeex.so.1 (0x00007ffa1ff34000)
        libsnappy.so.1 => /usr/lib/x86_64-linux-gnu/libsnappy.so.1 (0x00007ffa1fd2c000)
        libshine.so.3 => /usr/lib/x86_64-linux-gnu/libshine.so.3 (0x00007ffa1fb21000)
        librsvg-2.so.2 => /usr/lib/x86_64-linux-gnu/librsvg-2.so.2 (0x00007ffa1f8e9000)
        libopus.so.0 => /usr/lib/x86_64-linux-gnu/libopus.so.0 (0x00007ffa1f69f000)
        libopenjp2.so.7 => /usr/lib/x86_64-linux-gnu/libopenjp2.so.7 (0x00007ffa1f449000)
        libopencore-amrwb.so.0 => /usr/lib/x86_64-linux-gnu/libopencore-amrwb.so.0 (0x00007ffa1f235000)
        libopencore-amrnb.so.0 => /usr/lib/x86_64-linux-gnu/libopencore-amrnb.so.0 (0x00007ffa1f00a000)
        libmp3lame.so.0 => /usr/lib/x86_64-linux-gnu/libmp3lame.so.0 (0x00007ffa1ed93000)
        libgsm.so.1 => /usr/lib/x86_64-linux-gnu/libgsm.so.1 (0x00007ffa1eb86000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007ffa1e960000)
        libssh-gcrypt.so.4 => /usr/lib/x86_64-linux-gnu/libssh-gcrypt.so.4 (0x00007ffa1e6ec000)
        libopenmpt.so.0 => /usr/lib/x86_64-linux-gnu/libopenmpt.so.0 (0x00007ffa1e324000)
        libbluray.so.2 => /usr/lib/x86_64-linux-gnu/libbluray.so.2 (0x00007ffa1e0d4000)
        libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007ffa1dd6e000)
        libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007ffa1d9ad000)
        libgme.so.0 => /usr/lib/x86_64-linux-gnu/libgme.so.0 (0x00007ffa1d761000)
        libchromaprint.so.1 => /usr/lib/x86_64-linux-gnu/libchromaprint.so.1 (0x00007ffa1d54e000)
        libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007ffa1d33e000)
        libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007ffa1d12d000)
        libvdpau.so.1 => /usr/lib/x86_64-linux-gnu/libvdpau.so.1 (0x00007ffa1cf29000)
        libva-x11.so.2 => /usr/lib/x86_64-linux-gnu/libva-x11.so.2 (0x00007ffa1cd23000)
        libva-drm.so.2 => /usr/lib/x86_64-linux-gnu/libva-drm.so.2 (0x00007ffa1cb20000)
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007ffa1c91c000)
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007ffa1c716000)
        libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007ffa1c4c9000)
        libatspi.so.0 => /usr/lib/x86_64-linux-gnu/libatspi.so.0 (0x00007ffa1c299000)
        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007ffa1c067000)
        libdatrie.so.1 => /usr/lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007ffa1be60000)
        libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007ffa1bc13000)
        libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007ffa1b9e6000)
        libsoxr.so.0 => /usr/lib/x86_64-linux-gnu/libsoxr.so.0 (0x00007ffa1b783000)
        libnuma.so.1 => /usr/lib/x86_64-linux-gnu/libnuma.so.1 (0x00007ffa1b578000)
        libogg.so.0 => /usr/lib/x86_64-linux-gnu/libogg.so.0 (0x00007ffa1b36f000)
        libcroco-0.6.so.3 => /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3 (0x00007ffa1b134000)
        libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007ffa1ae18000)
        libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007ffa1abcd000)
        libmpg123.so.0 => /usr/lib/x86_64-linux-gnu/libmpg123.so.0 (0x00007ffa1a96e000)
        libvorbisfile.so.3 => /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3 (0x00007ffa1a766000)
        libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007ffa1a437000)
        libidn2.so.0 => /usr/lib/x86_64-linux-gnu/libidn2.so.0 (0x00007ffa1a21a000)
        libunistring.so.2 => /usr/lib/x86_64-linux-gnu/libunistring.so.2 (0x00007ffa19e9c000)
        libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007ffa19c89000)
        libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00007ffa19a53000)
        libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00007ffa1981f000)
        libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007ffa1959e000)
        libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007ffa191e6000)
        libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007ffa18fd1000)
        libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007ffa18d4d000)
        libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007ffa18b46000)
        libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007ffa18917000)
        libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007ffa18702000)
        libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007ffa1842c000)
        libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007ffa181fa000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007ffa17ff6000)
        libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007ffa17deb000)
        libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007ffa16242000)
        liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007ffa16026000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007ffa15e22000)

nu11ptr avatar Dec 16 '20 04:12 nu11ptr

Any comments on this? I want to ensure I'm not missing something in the docs or usage, thx

nu11ptr avatar Jan 31 '21 19:01 nu11ptr

up

VladDm93 avatar Feb 12 '21 11:02 VladDm93

Picked this back up again with new versions - still doesn't seem to work. Also tested '-H:+StaticExecutableWithDynamicLibC'. No dice... get immediate error. Any plans to add this? Without this, I can't imagine this feature will be worth much (at least on Linux - didn't test on other platforms)

GraalVM static build

nu11ptr avatar Jun 12 '21 22:06 nu11ptr

Facing the same problem. Still no solution posted by maintainers on this issue. @jperedadnr Do you have any solution to this issue? It would be very helpful for us 😃.

SaptarshiSarkar12 avatar May 28 '24 07:05 SaptarshiSarkar12

@nu11ptr Did you find any solution to this issue?

SaptarshiSarkar12 avatar May 29 '24 14:05 SaptarshiSarkar12

@nu11ptr Did you find any solution to this issue?

Yes, I switched away from Java and JavaFX. 😃 Most of my code is now in Rust and for the UI I use Tauri + Typescript/HTML/CSS.

nu11ptr avatar May 29 '24 14:05 nu11ptr

@nu11ptr Did you find any solution to this issue?

Yes, I switched away from Java and JavaFX. 😃 Most of my code is now in Rust and for the UI I use Tauri + Typescript/HTML/CSS.

In many areas I am facing issues in Javafx. But Still Java & Javafx is my favaourite language, I can make Apps for Desktop (Windows, Linux, Mac), Mobile (Android, IOS) and Web too just by using common codding!

Yeah! I know, still in Java / Javafx technical support is not as fast as Android native one (Android Studio) or Other language which targets only specific platform!...

ctoabidmaqbool avatar May 30 '24 03:05 ctoabidmaqbool

Yes, I switched away from Java and JavaFX. 😃 Most of my code is now in Rust and for the UI I use Tauri + Typescript/HTML/CSS.

I see. That's definitely a good move 😃. So, you haven't found any way to configure gluon to build static binaries or at least use graalvm to build static binaries for JavaFX? I tried building a static executable for a JavaFx using only GraalVM but it lacked JavaFx (base, graphics and fxml) modules required by that test project. @nu11ptr If you know how to tell graalvm that the javafx dependency libraries and javafx static libraries (like .dll, .so or .dylib files) are needed to be put inside the static executable, please let me know.

Moreover, I was successful in building the static executable only using graalvm but, when I run it, it throws me the below error which possibly indicates the absence of some javafx libraries which the executable can't locate. I have also created this GitHub repo which has the project sample code (a very simple and small JavaFX program) and I hope it will be helpful in debugging and reproducing the error trace.

Error Log
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 [email protected]/java.lang.ClassLoader.loadLibrary(ClassLoader.java:114)
	at [email protected]/java.lang.Runtime.load0(Runtime.java:852)
	at [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 [email protected]/java.security.AccessController.executePrivileged(AccessController.java:128)
	at [email protected]/java.security.AccessController.doPrivileged(AccessController.java:319)
	at javafx.graphics@22-ea/com.sun.prism.es2.ES2Pipeline.<clinit>(ES2Pipeline.java:52)
	at [email protected]/java.lang.Class.ensureInitialized(DynamicHub.java:599)
	at [email protected]/java.lang.Class.forName(DynamicHub.java:1396)
	at [email protected]/java.lang.Class.forName(DynamicHub.java:1352)
	at [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 [email protected]/java.lang.Thread.runWith(Thread.java:1583)
	at [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 [email protected]/java.lang.Thread.runWith(Thread.java:1583)
	at [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 [email protected]/java.lang.Thread.runWith(Thread.java:1583)
	at [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)

SaptarshiSarkar12 avatar May 31 '24 05:05 SaptarshiSarkar12

Error Log

@SaptarshiSarkar12 I am not sure, maybe enableSwRendering = true will solve the problem! https://github.com/gluonhq/gluonfx-gradle-plugin/issues/57

ctoabidmaqbool avatar May 31 '24 16:05 ctoabidmaqbool

@ctoabidmaqbool I moved from gluonfx-maven-plugin to build static binaries. I tried adding -Dprism.sw=true to graalvm native-image arg and adding System.setProperty("prism.order", "sw") before the JavaFX app launch method is called, but nothing worked. It showed me the below error when I tried to run the binary. How do I solve this error? Am I doing any mistake in the previous steps? Please let me know :smile:.

Error Log with SW Rendering enabled
Graphics Device initialization failed for :  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 [email protected]/java.lang.Thread.runWith(Thread.java:1583)
        at [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 [email protected]/java.lang.Thread.runWith(Thread.java:1583)
        at [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)

SaptarshiSarkar12 avatar May 31 '24 19:05 SaptarshiSarkar12