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