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 <twi...@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



--
Miles

Reply via email to