1.利用JDK11的jlink,對應各平台產生獨立的run-time image,並對應各系統平台製作安裝檔(win->.msi, linux->.deb,.rpm, mac->.pkg蠻累人的)。
記得,你的應用程式如果要能正常的在JDK11跑,module-info.java記得要設定有用到的模組。
2.安裝JDK11後,再安裝icedtea-web:
https://icedtea.classpath.org/wiki/IcedTea-Web
https://github.com/AdoptOpenJDK/IcedTea-Web
github上的release有win跟linux平台的已編譯launcher,但就是沒有mac的,不過也不難處理,可以參照以下這個解法:
https://apple.stackexchange.com/questions/342943/in-macos-how-to-run-a-jnlp-file-with-openjdk-8?rq=1
或者直接在mac自已寫一個shell script launcher:
#!/bin/bash if [ "x$JAVA_HOME" = "x" ] ; then JAVA="$( which java 2>/dev/null )" else JAVA="$JAVA_HOME"/bin/java fi if [ "x$JAVA" = "x" ] ; then echo "Java executable not found" exit 1 fi if [ "x$1" = "x" ] ; then echo "Please provide JNLP file as first argument" exit 1 fi $JAVA -Xbootclasspath/a:netx.jar net.sourceforge.jnlp.runtime.Boot $1
icedtea-web >=1.8的版本開始支援jdk11,但在1.8版+jdk11跑似乎有點bug,
譬如AWT視窗凍結,因此我又降回1.6版+jdk8就又恢復正常。
似乎真的是jdk11的bug:
https://icedtea.classpath.org/wiki/IcedTea-Web#Common_Issues
https://bugs.openjdk.java.net/browse/JDK-8204142
3.安裝JDK11後,再安裝OpenWebStart:
https://openwebstart.com/technical-details/
這專案是基於icedtea-web衍生而來,官網表示在jdk8或jdk11都可使用,
也有已編譯好的win/mac/linux/unix執行檔,可以試試看。
4.改用.NET core + GTK,製作跨平台的視窗程式,只是除了windows以外,其它平台都要先安裝.NET core;除了linux外,其它平台都要先安裝GTK library(當然也可以先打包在程式內)