Windows Installation Instructions, All DLL Files Missing
kevin.rushforth at oracle.com
Fri Apr 17 20:51:12 UTC 2020
Where are you getting JDK 14.0.1 from? Does it include the Microsoft
VS2017 DLLs and Windows SDK DLLs in jdk-14.0.1/bin? There are 45 of them
(40 of them are of the form api-ms-win-*.dll). The JavaFX 14.0.1 sdk
includes them, but the jmods do not. See JDK-8207015  for why not. If
the JDK has them, then there should be no problem running a jlinked app.
One possible problem is that your jlink line is wrong. You should not
point to the SDK at all when running jlink. Use the jmods with jlink
(don't use the sdk). Use the sdk with javac and java --module-path
(don't use the jmods at all).
Btw, even if you are running a JDK that for some reason doesn't have the
Microsoft DLLs, you should still be able to run using the SDK (directly,
not via jlink, which requires the jmods) as follows:
java --module-path "C:\Program Files\Java\javafx-sdk-14\lib"
If this doesn't work without you putting javafx-sdk-14/bin in your PATH
then something else is wrong.
On 4/17/2020 1:18 PM, Christopher Miles wrote:
> I have downloaded both the "mods" and the SDK. I put them alongside
> the JDK on my workstation.
> C:\Program Files\Java\jdk-14.0.1
> C:\Program Files\Java\javafx-sdk-14
> C:\Program Files\Java\javafx-jmods-14.0.1
> If I remove the path `C:\Program Files\Java\javafx-sdk-14\bin` and
> point`jlink` at the `C:\Program Files\Java\javafx-jmods-14.0.1` path...
> jlink --module-path "C:\Program
> Files\Java\javafx-sdk-14\lib;C:\Program Files\Java\jdk-14.0.1/jmods"
> --output C:\Users\cmiles\source\repos\xmltool\target/jlink
> --strip-debug --no-man-pages --no-header-files --compress=2
> ...and remove `C:\Program Files\Java\javafx-sdk-14\bin` from my global
> path, the application builds. When I try to run the application I see
> the following error.
> Graphics Device initialization failed for : d3d, sw
> Error initializing QuantumRenderer: no suitable pipeline found
> Swapping out the mods path for the SDK "lib" directory has, as far as
> I can tell, the exact same effect. :-(
> If I add the path `C:\Program Files\Java\javafx-sdk-14\bin` to my
> global PATH then it does run successfully.
> I hear what you're saying but this doesn't seem to be the case...
> What version of Windows are you using? I don't think this is a Windows
> 10 specific issue but perhaps there is something platform specific
> Thank you!
> Scott Palmer wrote on 4/17/2020 15:23:
>> I use jlink and jpackage to distribute JavaFX applications.
>> You suggest there will be a problem if you use jlink, but it will
>> work if you include the needed javafx modules. The .jmod files
>> contain the necessary native libraries and jlink will build a JRE
>> that has the DLLs in the right place for the runtime to find them.
>> Modifying your PATH is not the right way to do this. Distributing a
>> runtime with your application is the right way to solve this. The
>> jlink and jpackage tools make this fairly easy. I use a custom Gradle
>> script to bundle my application, it works well.
>>> On Apr 17, 2020, at 2:55 PM, Christopher Miles
>>> <twitch at nervestaple.com> wrote:
>>> I manage a project that leverages JavaFX. It's been a while
>>> since I've worked on this project, almost two years. At that time
>>> JavaFX was bundled with the Java runtime from Oracle. The few
>>> customers I had would simply run the application from the bundled
>>> launcher and as long as they had Java installed, it would work.
>>> It's time for me to add some features to the project, I am now using
>>> OpenJDK 14.0.1 and I installed the OpenJavaFX package and followed
>>> the instructions from the following URL:
>>> I am on Windows and followed the instructions for that platform.
>>> Unfortunately, things didn't really work. The error was as follows:
>>> Graphics Device initialization failed for : d3d, sw Error
>>> initializing QuantumRenderer: no suitable pipeline found
>>> java.lang.RuntimeException: java.lang.RuntimeException: Error
>>> initializing QuantumRend erer: no suitable pipeline found at
>>> wn Source)
>>> I fussed with this and that but nothing made a difference.
>>> Eventually I tried adding the "bin" directory from the JavaFX
>>> distribution to my path. This is the entry I added to my global PATH
>>> C:\Program Files\Java\javafx-sdk-14\bin
>>> Is this the right way to do this and, if so, why isn't this included
>>> in the directions? Is this a Windows specific issue?
>>> Also, what impact does this have on distribution of applications?
>>> Looking at the "Runtime Images" instructions, it looks like the same
>>> issues will be present. Those instructions use `jlink` to point to
>>> the JavaFX libraries and the JAVAFX modules (distributed in another
>>> package) but also leave off references to the DLL files in the "bin"
>>> directory. I am worried that I will need to have people manually
>>> install the OpenJavaFX distribution and add the "bin" directory to
>>> their path in order to run my application. Please say it's not so!
>>> Any help or pointers to additional documentation would be very much
>>> appreciated! I have made it over the bumps and can now continue
>>> development of my application, my next concern is distributing it to
>>> : https://github.com/cmiles74/xmltool
>>> : https://openjfx.io/openjfx-docs/#install-javafx
More information about the openjfx-dev