2019-07-23

Java Web Start(JWS)在JDK11的因應

由於JDk11開始就不會再支援Java Web Start(JWS),以下提供幾種做法:

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(當然也可以先打包在程式內)

沒有留言:

張貼留言