Как использовать Openjfx в приложении веб-запуска с использованием OpenWebStart - PullRequest
0 голосов
/ 03 апреля 2020

Мы переносим приложение Java 1.8 JavaFX / Webstart на Java 11, используя Openjfx (https://openjfx.io) и OpenWebStart (https://openwebstart.com).

Мы успешно мигрировали и запустили приложение на JavaFx-14 (OpenJfx). Чтобы запустить его в IDE сейчас, необходимо включить следующие аргументы jvm:

 --module-path 'path/javafx-sdk-11.0.2/lib' --add-modules javafx.controls,javafx.fxml

Мы создаем приложение, используя Maven. Красиво работает на Java 1.8. Он подписывает все файлы jar, создает пакет и файл jnlp. Maven также создает «uber jar» со всеми включенными зависимостями. Мы перенесли POM, включая новые deps. Мы проверили его, вручную запустив приложение, используя файл uber jar через командную строку (используя параметры --module-path).

Мы включили аргумент --module-path в файл .jnlp:

    <?xml version="1.0" encoding="utf-8"?>
    <jnlp
      spec="1.0+"
      codebase="http://localhost:8080/download/"
      href="myapp.jnlp">
      <information>
        <title>MyApp</title>
        <vendor>Myself</vendor>
        <homepage href="http://localhost:8080"/>
        <description>My App</description>
        <description>Migration test</description>
        <offline-allowed/>
      </information>

      <security>
         <all-permissions/>
      </security>    

      <resources>
        <j2se version="11" 
          initial-heap-size="256m" 
          max-heap-size="2048m" 
          java-vm-args="-Xms256m -Xmx4096m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=25 --module-path '/Users/chocksmith/Desktop/javafx-sdk-11.0.2/lib' --add-modules javafx.controls,javafx.fxml"/>
        <jar href="myapp-5.0.0.jar"/>
      </resources>
      <application-desc main-class="com.mycompany.myproduct.application.App"/> 
    </jnlp> 

К сожалению, это не удается:

Caused by: java.lang.ClassNotFoundException: javafx.application.Application
    at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:670)

У нас кончаются идеи. Пожалуйста, сообщите!

1 Ответ

0 голосов
/ 03 апреля 2020

FX необходимо связать в JDK на стороне клиента.

Нам удалось заставить его работать с версией Сообщества Zulo 13.29.11

https://www.azul.com/downloads/zulu-community/?architecture=x86-64-bit&package=jdk-fx

Используйте приложение "OpenWebStart Settings.app" для настройки правильной JVM в вашей системе.

...