Without the reliance on javafx-swing I was able to create an image, package
and execute my test application.
Is the Swing problem a known bug in JavaFX 11?

The jlink runtime image I reckon now also contains the JavaFX modules?
Seems unnecessary when they already are dependencies.

/Sverre

Den tor. 27. sep. 2018 kl. 10:42 skrev Sverre Moe <sverre....@gmail.com>:

> Den tor. 27. sep. 2018 kl. 00:49 skrev Kevin Rushforth <
> kevin.rushfo...@oracle.com>:
>
>> No, jlink won't link in a non-modular application. So the steps are:
>>
>> 1) Run jlink to create a Java runtime image, possibly stripped down, and
>> include the javafx.* modules you need
>> 2) Run jpackager to package your non-modular application with the above
>> Java runtime image.
>>
>> -- Kevin
>>
>
> So we have to create the image with the jlink first before we use
> jpackager, and we have to link in with the javafx modules. We cannot use
> the javafx dependencies in the project?
>
> jlink --add-modules=ALL-SYSTEM --output image
> Error: Module ALL-SYSTEM not found
>
> The just to make sure we have everything we need I add the actual modules
> jlink --add-modules=java.base --add-modules=java.desktop
> --add-modules=java.net.http --add-modules=java.xml
> --add-modules=java.prefs --add-modules=java.logging --output image
>
> Linking in with the JavaFX jmods from Gluon:
> jlink --add-modules=java.base --add-modules=java.desktop
> --add-modules=java.net.http --add-modules=java.xml
> --add-modules=java.prefs --add-modules=java.logging --module-path
> /usr/java/javafx-jmods-11/ --add-modules=javafx.base
> --add-modules=javafx.controls --add-modules=javafx.fxml
> --add-modules=javafx.graphics --add-modules=javafx.web
> --add-modules=javafx.media --add-modules=javafx.swing --output image
>
> I managed to build our Java 8 project with Java 11, using the JavaFX
> dependencies.
> Then using jpackager with the runtime image from jlink
> /usr/java/jpackager/jpackager create-installer --input
> build/distributions/application-1.0.0-SNAPSHOT/lib/ --output outputDir
> --runtime-image image/ --verbose --echo-mode --main-jar
> application-1.0.0-SNAPSHOT.jar
>
> Running the application image from jpackager
> First try:
> I thought I had added all necessary modules to the runtime image, but I
> needed one more, java.management.
>
> Second try:
> InteropFactory: cannot load
> com.sun.javafx.embed.swing.newimpl.InteropFactoryN
> Exception in thread "GUIBuilderWorker" java.lang.IllegalAccessError: class
> com.sun.javafx.embed.swing.oldimpl.SwingNodeInteropO (in module
> javafx.swing) cannot access class sun.swing.JLightweightFrame (in module
> java.desktop) because module java.desktop does not export sun.swing to
> module javafx.swing
>        at
> javafx.swing/com.sun.javafx.embed.swing.oldimpl.SwingNodeInteropO.<clinit>(SwingNodeInteropO.java:71)
>
>        at
> javafx.swing/com.sun.javafx.embed.swing.oldimpl.InteropFactoryO.createSwingNodeImpl(InteropFactoryO.java:42)
>
>        at
> javafx.swing/javafx.embed.swing.SwingNode.<init>(SwingNode.java:271)
>        at no.company.application.fx.MySwingComponent.initNode(
> MySwingComponent.java:155)
>
> The module java.desktop should include the AWT/Swing.
>
> At least I now have been able to create an native application using both
> jlink and the new jpackager.
>
> /Sverre
>

Reply via email to