Both companies have folks who monitor this list, so maybe they will see
it and respond.
In the meantime copying bin to bin/javafx is an easy-enough local
"solution". :)
Yes.
-- Kevin
On 9/30/2023 8:53 AM, Rony G. Flatscher wrote:
On 30.09.2023 15:05, Kevin Rushforth wrote:
The JavaFX native files were deliberately moved from bin to
bin/javafx in JavaFX 19. See JDK-8281089 [1]. Using jlink with the
JavaFX jmods will correctly put those libraries in bin/javafx. I
suspect that the JDK build procedure Azul and BellSoft use is not
doing that.
-- Kevin
[1] https://bugs.openjdk.org/browse/JDK-8281089
Thank you very much, Kevin!
Not having accounts at Azul and BellSoft, there is no means to inform
them, unfortunately. (Maybe others on the list who have accounts could
do so.)
In the meantime copying bin to bin/javafx is an easy-enough local
"solution". :)
---rony
On 9/30/2023 4:40 AM, Rony G. Flatscher wrote:
Added the subdir "bin/javafx" then copied all files of "bin" into it
after which everything works.
Both OpenJDK 21 versions (Azul, Bellsouth) were downloaded as
zip-archives, unzipped and JAVA_HOME set accordingly, which has been
working for all past versions. It seems that somewhere a wrong
configuration sneaked into 21 causing the loading of the dlls from
the wrong, non-existing subdirectory "bin/javafx".
---rony
On 29.09.2023 23:32, Rony G. Flatscher wrote:
Also, in this case JAVA_HOME is set as:
F:\work\svn\bsf4oorexx\branches\850\bsf4oorexx\samples\JavaFX>set j
JAVA_HOME=C:\Program Files\BellSoft\jdk-21-full
---rony
On 29.09.2023 23:29, Rony G. Flatscher wrote:
Sorry, had to go to an event in between.
On 29.09.2023 15:35, Kevin Rushforth wrote:
It generally doesn't matter where the Microsoft DLLs are loaded
from. What I don't see in your log is the loading of
javafx_font.dll. That, and the other JavaFX libraries, are the
important ones.
This is interesting as well, here the occurrences of javafx_font.dll:
F:\work\svn\bsf4oorexx\branches\850\bsf4oorexx\samples\JavaFX>dir
C:\javafx_font.dll /s
Volume in drive C is root_c
Volume Serial Number is 2AF2-88BA
Directory of C:\Program Files\azul\zulu21_jdk21.0.0\bin
12.09.2023 14:02 77 864 javafx_font.dll
1 File(s) 77 864 bytes
Directory of C:\Program Files\BellSoft\jdk-18.0.1.1-full\bin
28.05.2022 04:41 76 992 javafx_font.dll
1 File(s) 76 992 bytes
Directory of C:\Program Files\BellSoft\jdk-21-full\bin
20.09.2023 01:11 77 504 javafx_font.dll
1 File(s) 77 504 bytes
Directory of C:\Program Files\BellSoft\LibericaJDK-17-Full\bin
12.01.2023 21:09 76 992 javafx_font.dll
1 File(s) 76 992 bytes
Directory of C:\Program Files
(x86)\BellSoft\jdk8u312-full\jre\bin
16.10.2021 20:54 61 152 javafx_font.dll
1 File(s) 61 152 bytes
Directory of C:\Program Files
(x86)\BellSoft\LibericaJDK-17-Full\bin
28.05.2022 02:52 62 144 javafx_font.dll
1 File(s) 62 144 bytes
Directory of C:\Program Files
(x86)\BellSoft\LibericaJDK-8-Full\jre\bin
27.05.2022 22:59 61 632 javafx_font.dll
1 File(s) 61 632 bytes
Directory of
C:\Users\Administrator\.IdeaIC2019.3\system\tmp\patch-update\jre\bin
16.04.2020 17:59 80 408 javafx_font.dll
1 File(s) 80 408 bytes
Directory of
C:\Users\Administrator\AppData\Local\JetBrains\IdeaIC2020.1\tmp\patch-update\jre\bin
24.09.2020 16:30 80 408 javafx_font.dll
1 File(s) 80 408 bytes
Directory of
C:\Users\Administrator\AppData\Local\SceneBuilder\runtime\bin
05.06.2018 13:48 58 792 javafx_font.dll
1 File(s) 58 792 bytes
Total Files Listed:
10 File(s) 713 888 bytes
0 Dir(s) 34 872 254 464 bytes free
Here here the relevant trace:
... cut ...
WARNING: java.lang.UnsatisfiedLinkError: Can't load library:
C:\Program Files\BellSoft\jdk-21-full\bin\javafx\msvcp140_2.dll
Loaded C:\Program
Files\BellSoft\LibericaJDK-17-Full\bin\msvcp140_2.dll from
java.library.path
WARNING: java.lang.UnsatisfiedLinkError: Can't load library:
C:\Program Files\BellSoft\jdk-21-full\bin\javafx\prism_d3d.dll
Loaded C:\Program
Files\BellSoft\LibericaJDK-17-Full\bin\prism_d3d.dll from
java.library.path
JavaFX: using com.sun.javafx.tk.quantum.QuantumToolkit
WARNING: java.lang.UnsatisfiedLinkError: Can't load library:
C:\Program Files\BellSoft\jdk-21-full\bin\javafx\glass.dll
Loaded C:\Program
Files\BellSoft\LibericaJDK-17-Full\bin\glass.dll from
java.library.path
WARNING: java.lang.UnsatisfiedLinkError: Can't load library:
C:\Program Files\BellSoft\jdk-21-full\bin\javafx\javafx_font.dll
Loaded C:\Program
Files\BellSoft\LibericaJDK-17-Full\bin\javafx_font.dll from
java.library.path
Exception in Application start method
Exception in thread "JavaFX Application Thread"
java.lang.UnsatisfiedLinkError: 'java.lang.String
com.sun.javafx.font.directwrite.DWFactory.regReadFontLink(java.
lang.String)'
at
javafx.graphics/com.sun.javafx.font.directwrite.DWFactory.regReadFontLink(Native
Method)
at
javafx.graphics/com.sun.javafx.font.directwrite.DWFactory.getFallbacks(DWFactory.java:166)
at
javafx.graphics/com.sun.javafx.font.LogicalFont.getLinkedFonts(LogicalFont.java:214)
at
javafx.graphics/com.sun.javafx.font.LogicalFont.getNumSlots(LogicalFont.java:223)
at
javafx.graphics/com.sun.javafx.font.CompositeGlyphMapper.<init>(CompositeGlyphMapper.java:62)
at
javafx.graphics/com.sun.javafx.font.LogicalFont.getGlyphMapper(LogicalFont.java:439)
at
javafx.graphics/com.sun.javafx.text.GlyphLayout.breakRuns(GlyphLayout.java:229)
at
javafx.graphics/com.sun.javafx.text.PrismTextLayout.buildRuns(PrismTextLayout.java:819)
at
javafx.graphics/com.sun.javafx.text.PrismTextLayout.layout(PrismTextLayout.java:1070)
at
javafx.graphics/com.sun.javafx.text.PrismTextLayout.ensureLayout(PrismTextLayout.java:230)
at
javafx.graphics/com.sun.javafx.text.PrismTextLayout.getBounds(PrismTextLayout.java:256)
at
javafx.controls/com.sun.javafx.scene.control.skin.Utils.computeTextWidth(Utils.java:129)
at
javafx.controls/javafx.scene.control.skin.LabeledSkinBase.computeMinLabeledPartWidth(LabeledSkinBase.java:809)
at
javafx.controls/javafx.scene.control.skin.LabeledSkinBase.computeMinWidth(LabeledSkinBase.java:306)
at
javafx.controls/javafx.scene.control.Control.computeMinWidth(Control.java:504)
at
javafx.graphics/javafx.scene.Parent.minWidth(Parent.java:1049)
at
javafx.graphics/javafx.scene.layout.Region.minWidth(Region.java:1500)
at
javafx.graphics/javafx.scene.layout.Region.computeChildPrefAreaWidth(Region.java:1959)
at
javafx.graphics/javafx.scene.layout.AnchorPane.computeChildWidth(AnchorPane.java:344)
at
javafx.graphics/javafx.scene.layout.AnchorPane.layoutChildren(AnchorPane.java:380)
at
javafx.graphics/javafx.scene.Parent.layout(Parent.java:1208)
at
javafx.graphics/javafx.scene.Scene.doLayoutPass(Scene.java:594)
at
javafx.graphics/javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2600)
at
javafx.graphics/com.sun.javafx.tk.Toolkit.lambda$runPulse$2(Toolkit.java:401)
at
java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at
javafx.graphics/com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:400)
at
javafx.graphics/com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:430)
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:592)
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:572)
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.pulseFromQueue(QuantumToolkit.java:565)
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$11(QuantumToolkit.java:352)
at
javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at
javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native
Method)
at
javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:185)
at java.base/java.lang.Thread.run(Thread.java:1583)
Here the PATH environment variable in this case (no jdk17):
PATH=C:\Program
Files\BellSoft\jdk-21-full\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;e:\rony\tools;e:\vslick\win;C:\Program
Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program
Files\Microsoft DNX\Dnvm\;C:\Program Files (x86)\Windows
Kits\8.1\Windows Performance Toolkit\;C:\Program
Files\gs\gs9.22\lib;C:\Program
Files\gs\gs9.22\bin;C:\WINDOWS\System32\OpenSSH\;C:\Program
Files (x86)\PuTTY\;C:\Program Files\Intel\WiFi\bin\;C:\Program
Files\Common Files\Intel\WirelessCommon\;C:\Program
Files\TortoiseSVN\bin;C:\Program Files\TortoiseHg\;C:\Program
Files\TortoiseGit\bin;C:\Program Files\dotnet\;C:\Program
Files (x86)\AOMEI\AOMEI Backupper\7.1.2;C:\Program
Files\Git\cmd;C:\Program Files\BSF4ooRexx850;c:\Program Files
(x86)\Intel\Intel(R) Management Engine
Components\DAL;c:\Program Files\Intel\Intel(R) Management
Engine Components\DAL;C:\Program
Files\oorexx;C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Scripts\;C:\Users\Administrator\AppData\Local\Programs\Python\Python311\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\Program
Files\Intel\WiFi\bin\;C:\Program Files\Common
Files\Intel\WirelessCommon\
So JDK17 is not on PATH, but Java/JDK 21 finds JDK17, maybe from
the registry entry for
"Computer\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\17.0.3" (only
entry), having an entry of "JavaHome" with the value of
"C:\Program Files\BellSoft\LibericaJDK-17-Full".
Also key
"Computer\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\17.0.3\MSI"
having an entry for "INSTALLDIR" of "C:\Program
Files\BellSoft\LibericaJDK-17-Full\".
So it seems that JDK21's java.exe will not find the dlls in the
non-existing "*\jdk-21-full\javafx\" directory and eventually
resorting to the registry entry to lookup JDK 17.
---rony
On 9/29/2023 6:30 AM, Rony G. Flatscher wrote:
On 29.09.2023 14:53, Kevin Rushforth wrote:
This is a new native method (actually moved from another class)
in JavaFX 21. This is very likely due to a mismatch between the
native library and the Java classes. I suspect you have a
directory in your PATH that is picking up an old
javafx_font.dll library. Run your program with
"-Djavafx.verbose=true" to see where the library is loaded from.
Thank you, this is the output:
WARNING: java.lang.UnsatisfiedLinkError: Can't load library:
C:\Program
Files\BellSoft\jdk-21-full\bin\javafx\api-ms-win-core-console-l1-1-0.dll
Loaded C:\Program
Files\TortoiseGit\bin\api-ms-win-core-console-l1-1-0.dll
from java.library.path
WARNING: java.lang.UnsatisfiedLinkError: Can't load library:
C:\Program
Files\BellSoft\jdk-21-full\bin\javafx\api-ms-win-core-console-l1-2-0.dll
System.loadLibrary(api-ms-win-core-console-l1-2-0) succeeded
WARNING: java.lang.UnsatisfiedLinkError: Can't load library:
C:\Program
Files\BellSoft\jdk-21-full\bin\javafx\api-ms-win-core-datetime-l1-1-0.dll
Loaded C:\Program
Files\TortoiseGit\bin\api-ms-win-core-datetime-l1-1-0.dll
from java.library.path
WARNING: java.lang.UnsatisfiedLinkError: Can't load library:
C:\Program
Files\BellSoft\jdk-21-full\bin\javafx\api-ms-win-core-debug-l1-1-0.dll
Loaded C:\Program
Files\TortoiseGit\bin\api-ms-win-core-debug-l1-1-0.dll from
java.library.path
WARNING: java.lang.UnsatisfiedLinkError: Can't load library:
C:\Program
Files\BellSoft\jdk-21-full\bin\javafx\api-ms-win-core-errorhandling-l1-1-0.dll
Loaded C:\Program
Files\TortoiseGit\bin\api-ms-win-core-errorhandling-l1-1-0.dll
from java.library.path
WARNING: java.lang.UnsatisfiedLinkError: Can't load library:
C:\Program
Files\BellSoft\jdk-21-full\bin\javafx\api-ms-win-core-file-l1-1-0.dll
Loaded C:\Program
Files\TortoiseGit\bin\api-ms-win-core-file-l1-1-0.dll from
java.library.path
... cut ...
So indeed, it seems to be picking up those dlls from TortoiseGit.
The dlls are there:
C:\Program Files\BellSoft\jdk-21-full\bin
Directory of C:\Program Files\BellSoft\jdk-21-full\bin
19.09.2023 17:09 22 008
api-ms-win-core-console-l1-1-0.dll
19.09.2023 17:09 21 992
api-ms-win-core-console-l1-2-0.dll
19.09.2023 17:09 22 024
api-ms-win-core-datetime-l1-1-0.dll
19.09.2023 17:09 22 008
api-ms-win-core-debug-l1-1-0.dll
19.09.2023 17:09 22 008
api-ms-win-core-errorhandling-l1-1-0.dll
19.09.2023 17:09 22 008
api-ms-win-core-fibers-l1-1-0.dll
19.09.2023 17:09 26 120
api-ms-win-core-file-l1-1-0.dll
19.09.2023 17:09 22 024
api-ms-win-core-file-l1-2-0.dll
19.09.2023 17:09 22 024
api-ms-win-core-file-l2-1-0.dll
19.09.2023 17:09 22 024
api-ms-win-core-handle-l1-1-0.dll
19.09.2023 17:09 21 984
api-ms-win-core-heap-l1-1-0.dll
19.09.2023 17:09 22 008
api-ms-win-core-interlocked-l1-1-0.dll
19.09.2023 17:09 22 024
api-ms-win-core-libraryloader-l1-1-0.dll
19.09.2023 17:09 22 008
api-ms-win-core-localization-l1-2-0.dll
19.09.2023 17:09 21 984
api-ms-win-core-memory-l1-1-0.dll
19.09.2023 17:09 21 984
api-ms-win-core-namedpipe-l1-1-0.dll
19.09.2023 17:09 22 008
api-ms-win-core-processenvironment-l1-1-0.dll
19.09.2023 17:09 22 024
api-ms-win-core-processthreads-l1-1-0.dll
19.09.2023 17:09 21 984
api-ms-win-core-processthreads-l1-1-1.dll
19.09.2023 17:09 21 984
api-ms-win-core-profile-l1-1-0.dll
19.09.2023 17:09 21 984
api-ms-win-core-rtlsupport-l1-1-0.dll
19.09.2023 17:09 22 024
api-ms-win-core-string-l1-1-0.dll
19.09.2023 17:09 22 024
api-ms-win-core-synch-l1-1-0.dll
19.09.2023 17:09 21 968
api-ms-win-core-synch-l1-2-0.dll
19.09.2023 17:09 22 024
api-ms-win-core-sysinfo-l1-1-0.dll
19.09.2023 17:09 22 024
api-ms-win-core-timezone-l1-1-0.dll
19.09.2023 17:09 21 984
api-ms-win-core-util-l1-1-0.dll
19.09.2023 17:09 22 024
api-ms-win-crt-conio-l1-1-0.dll
19.09.2023 17:09 26 104
api-ms-win-crt-convert-l1-1-0.dll
19.09.2023 17:09 21 984
api-ms-win-crt-environment-l1-1-0.dll
19.09.2023 17:09 22 024
api-ms-win-crt-filesystem-l1-1-0.dll
19.09.2023 17:09 21 984
api-ms-win-crt-heap-l1-1-0.dll
19.09.2023 17:09 22 008
api-ms-win-crt-locale-l1-1-0.dll
19.09.2023 17:09 30 176
api-ms-win-crt-math-l1-1-0.dll
19.09.2023 17:09 30 216
api-ms-win-crt-multibyte-l1-1-0.dll
19.09.2023 17:09 75 232
api-ms-win-crt-private-l1-1-0.dll
19.09.2023 17:09 22 008
api-ms-win-crt-process-l1-1-0.dll
19.09.2023 17:09 26 080
api-ms-win-crt-runtime-l1-1-0.dll
19.09.2023 17:09 26 120
api-ms-win-crt-stdio-l1-1-0.dll
19.09.2023 17:09 26 120
api-ms-win-crt-string-l1-1-0.dll
19.09.2023 17:09 21 984
api-ms-win-crt-time-l1-1-0.dll
19.09.2023 17:09 22 024
api-ms-win-crt-utility-l1-1-0.dll
but the look-up is using "C:\Program
Files\BellSoft\jdk-21-full\bin\javafx\..."
The Windows PATH starts out with:
PATH=C:\Program Files\BellSoft\jdk-21-full\bin;... cut ...
---rony
On 9/29/2023 5:06 AM, Rony G. Flatscher wrote:
Downloaded the 64-bit OpenJDK21 package for Windows that
include JavaFX from Azul ("FX") and Bellsouth ("full").
Both packages cause the following error:
Exception in Application start method
Exception in thread "JavaFX Application Thread"
java.lang.UnsatisfiedLinkError: 'java.lang.String
com.sun.javafx.font.direct
write.DWFactory.regReadFontLink(java.lang.String)'
at
javafx.graphics/com.sun.javafx.font.directwrite.DWFactory.regReadFontLink(Native
Method)
at
javafx.graphics/com.sun.javafx.font.directwrite.DWFactory.getFallbacks(DWFactory.java:166)
at
javafx.graphics/com.sun.javafx.font.LogicalFont.getLinkedFonts(LogicalFont.java:214)
at
javafx.graphics/com.sun.javafx.font.LogicalFont.getNumSlots(LogicalFont.java:223)
at
javafx.graphics/com.sun.javafx.font.CompositeGlyphMapper.<init>(CompositeGlyphMapper.java:62)
at
javafx.graphics/com.sun.javafx.font.LogicalFont.getGlyphMapper(LogicalFont.java:439)
at
javafx.graphics/com.sun.javafx.text.GlyphLayout.breakRuns(GlyphLayout.java:229)
at
javafx.graphics/com.sun.javafx.text.PrismTextLayout.buildRuns(PrismTextLayout.java:819)
at
javafx.graphics/com.sun.javafx.text.PrismTextLayout.layout(PrismTextLayout.java:1070)
at
javafx.graphics/com.sun.javafx.text.PrismTextLayout.ensureLayout(PrismTextLayout.java:230)
at
javafx.graphics/com.sun.javafx.text.PrismTextLayout.getBounds(PrismTextLayout.java:256)
at
javafx.controls/com.sun.javafx.scene.control.skin.Utils.computeTextWidth(Utils.java:129)
at
javafx.controls/javafx.scene.control.skin.LabeledSkinBase.computeMinLabeledPartWidth(LabeledSkinBase.java:809)
at
javafx.controls/javafx.scene.control.skin.LabeledSkinBase.computeMinWidth(LabeledSkinBase.java:306)
at
javafx.controls/javafx.scene.control.Control.computeMinWidth(Control.java:504)
at
javafx.graphics/javafx.scene.Parent.minWidth(Parent.java:1049)
at
javafx.graphics/javafx.scene.layout.Region.minWidth(Region.java:1500)
at
javafx.graphics/javafx.scene.layout.Region.computeChildPrefAreaWidth(Region.java:1959)
at
javafx.graphics/javafx.scene.layout.AnchorPane.computeChildWidth(AnchorPane.java:344)
at
javafx.graphics/javafx.scene.layout.AnchorPane.layoutChildren(AnchorPane.java:380)
at
javafx.graphics/javafx.scene.Parent.layout(Parent.java:1208)
at
javafx.graphics/javafx.scene.Scene.doLayoutPass(Scene.java:594)
at
javafx.graphics/javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2600)
at
javafx.graphics/com.sun.javafx.tk.Toolkit.lambda$runPulse$2(Toolkit.java:401)
at
java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at
javafx.graphics/com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:400)
at
javafx.graphics/com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:430)
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:592)
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:572)
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.pulseFromQueue(QuantumToolkit.java:565)
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$11(QuantumToolkit.java:352)
at
javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at
javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native
Method)
at
javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:185)
at java.base/java.lang.Thread.run(Thread.java:1583)
Would anyone know how to fix this, if possible at all?
---rony