Windows Installation Instructions, All DLL Files Missing

Kevin Rushforth kevin.rushforth at oracle.com
Fri Apr 17 21:34:31 UTC 2020


 From where are you getting your OpenJDK build? https://jdk.java.net/14 
? Somewhere else?

-- Kevin


On 4/17/2020 2:16 PM, Christopher Miles wrote:
> Yeah, I've tried it with both. The instructions on the JavaFX page 
> tell you to add the "lib" directory to the `javac` path and the "mods" 
> to the `jlink` path. I figured, since nothing is working, why not try 
> them the other way around? In all cases the results are the same.
>
> I'm using OpenJDK, wouldn't that project have the same issue 
> distributing these DLL files? I would bet they would, since they are 
> also an open source project. I can run Swing projects, however, 
> without these DLL files.
>
> I can give the Oracle JDK a try. I had been shying away from it since 
> OpenJDK is getting to be so popular. If that works, I will let the 
> list know.
>
> As an aside, the JavaFX home page recommends using OpenJDK right now:
>
>   https://openjfx.io/openjfx-docs/#install-java
>
> Thank you!
>
> Kevin Rushforth wrote on 4/17/2020 16:51:
>> 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 [1] 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" 
>> --add-modules 
>> javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web 
>> MyApplication
>>
>> If this doesn't work without you putting javafx-sdk-14/bin in your 
>> PATH then something else is wrong.
>>
>> -- Kevin
>>
>> [1] https://bugs.openjdk.java.net/browse/JDK-8207015
>>
>> 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" 
>>> --add-modules 
>>> javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web,java.sql,java.base 
>>> --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 involved.
>>>
>>> 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.
>>>>
>>>> Scott
>>>>
>>>>> On Apr 17, 2020, at 2:55 PM, Christopher Miles 
>>>>> <twitch at nervestaple.com> wrote:
>>>>>
>>>>> I manage a project[0]  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[1] from the following URL:
>>>>>
>>>>> https://openjfx.io/openjfx-docs/#install-javafx
>>>>>
>>>>> 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 
>>>>> javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(Unkno 
>>>>> 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 variable:
>>>>>
>>>>> 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 customers.
>>>>>
>>>>> -- 
>>>>> Miles
>>>>>
>>>>> [0]: https://github.com/cmiles74/xmltool
>>>>> [1]: https://openjfx.io/openjfx-docs/#install-javafx
>>>>
>>>
>>>
>>
>
>



More information about the openjfx-dev mailing list