[External] : Re: OpenJDK 21 with FX (Azul, Bellsouth) on Windows: java.lang.UnsatisfiedLinkError: 'java.lang.String com.sun.javafx.font.direct, write.DWFactory.regReadFontLink(java.lang.String)'
Rony G. Flatscher
Rony.Flatscher at wu.ac.at
Fri Sep 29 21:32:11 UTC 2023
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
>>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20230929/5a8810d7/attachment-0001.htm>
More information about the openjfx-dev
mailing list