Мы переносим приложение 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)
У нас кончаются идеи. Пожалуйста, сообщите!