我们正在使用 Openjfx ( https://openjfx.io ) 和 OpenWebStart ( https://openwebstart.com ) 将 Java 1.8 JavaFX/Webstart 应用程序迁移到 Java 11。
我们成功地将应用程序迁移并运行到 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 参数)手动运行应用程序对其进行了测试。
我们在 .jnlp 文件中包含了 --module-path 参数:
<?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)
我们的想法在这里用完了。请指教!