Hi, 

I am facing an issue where, after updating to JFX 16, an application fail to 
start on Windows machines where the 
MS Visual C++ 2019 redistributable libraries are not installed, with the 
following exception: 

java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: 
C:\binjr-3.0.2-SNAPSHOT_windows-amd64\runtime\bin\glass.dll: Can't find 
dependent libraries 
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.startup(Unknown 
Source) 
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(Unknown 
Source) 
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(Unknown 
Source) 
at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(Unknown 
Source) 
at 
javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown
 Source) 
at 
javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(Unknown
 Source) 
at java.base/java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.UnsatisfiedLinkError: 
C:\binjr-3.0.2-SNAPSHOT_windows-amd64\runtime\bin\glass.dll: Can't find 
dependent libraries 
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method) 
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(Unknown 
Source) 
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(Unknown Source) 
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(Unknown Source) 
at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(Unknown Source) 
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(Unknown Source) 
at java.base/java.lang.ClassLoader.loadLibrary(Unknown Source) 
at java.base/java.lang.Runtime.loadLibrary0(Unknown Source) 
at java.base/java.lang.System.loadLibrary(Unknown Source) 
at 
javafx.graphics/com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(Unknown 
Source) 
at javafx.graphics/com.sun.glass.utils.NativeLibLoader.loadLibrary(Unknown 
Source) 
at javafx.graphics/com.sun.glass.ui.Application.loadNativeLibrary(Unknown 
Source) 
at javafx.graphics/com.sun.glass.ui.Application.loadNativeLibrary(Unknown 
Source) 
at javafx.graphics/com.sun.glass.ui.win.WinApplication.access$000(Unknown 
Source) 
at javafx.graphics/com.sun.glass.ui.win.WinApplication$1.run(Unknown Source) 
at javafx.graphics/com.sun.glass.ui.win.WinApplication$1.run(Unknown Source) 
at java.base/java.security.AccessController.doPrivileged(Unknown Source) 
at javafx.graphics/com.sun.glass.ui.win.WinApplication.<clinit>(Unknown Source) 
at 
javafx.graphics/com.sun.glass.ui.win.WinPlatformFactory.createApplication(Unknown
 Source) 
at 
javafx.graphics/com.sun.glass.ui.win.WinPlatformFactory.createApplication(Unknown
 Source) 
at javafx.graphics/com.sun.glass.ui.Application.run(Unknown Source) 
... 7 more 

As previously mentioned, the above exception is not thrown on machines where 
the Visual C++ 2019 
redistributable is installed. 

In more details, the application's package is built using OpenJDK 16 and 
OpenJFX 16 (x64). 
I use jlink to build a runtime image that includes the javaFX modules 
(downloaded from Gluon[1]), and 
launch the application from the classpath using this image (as the app itself 
is not modular). 

An important thing to note, is that the issue does not arise when building the 
package using the same 
process using JavaFX 15. 

Also,I noticed that the issue does not arise either when I launch the 
application using the openJDK 16 
built by Azul that includes JavaFX[2]. From there I tried substituting the 
"glass.dll" in my jlink-built runtime 
for the onein the Azul distro, and, again, this works. 

Using Dependancy Walker, I then confirmed that "glass.dll" as present in 
binairies linked on openjfx.io have 
a dependency to VCRUNTIME140_1.DLL whereas the one built by Azul does not. 
(Please note the "_1" above; to be quite clear both versions of the dll have 
dependency to vcruntime140.dll, 
which is bundled with openJDK on Windows, but not vcruntime140_1.dll) 

To be quite honest, I'm not sure this problem has its root in JavaFX's source 
code or if it is specific to the JavaFX 
binaries built by Gluon or the way I build my application package. 

Thanks in advance for your insights. 

-- Fred 

[1] [ https://gluonhq.com/download/javafx-16-jmods-windows/ | 
https://gluonhq.com/download/javafx-16-jmods-windows/ ] 
[2] [ 
https://www.azul.com/downloads/zulu-community/?version=java-16-sts&os=windows&architecture=x86-64-bit&package=jdk-fx
 | 
https://www.azul.com/downloads/zulu-community/?version=java-16-sts&os=windows&architecture=x86-64-bit&package=jdk-fx
 ] 



Reply via email to