2018年12月30日日曜日

UbuntuでJava Web Start (サポート状況/文字化け対策)

UbuntuでJava Web Startをやるのは意外と面倒になってきました。 自分自身がいつか絶対ハマるなと思ったのでその対策をまとめておきます。


今後の Java Web Start の立ち位置

(1) まずJava Web StartはOracleの技術なので、OpenJDKには含まれていません。 そのためOracle JRE/JDKを手動ダウンロードする必要がある。

(2) しかもJava Web StartはJava SE 8からJava SE 11への移行に伴って廃止されるので、Java SE 11には含まれていません。 Java SE 8は2019/1から商用サポートが切れ、セキュリティ的にも問題が出てきますが、仕方ない。 Java SE 8をダウンロードしましょう。

(3) さらにJava SE 8はいくつかのOSでは日本語表示に問題があります。 特にUbuntuはデフォルトでサポートされていないので日本語は文字化けます。 解決策はこことかここで語られてますが、Ubuntu 18.04以降を対象とした対策は以下のようになります。


文字化けを直す方法

まずはOracle JRE/JDKをtarballで拾ってきてどこかに配置します。もちろん apt + PPA で拾ってきても良い。 私は /opt/jre1.8.0_191/ に配置しました。

次に /opt/jre1.8.0_191/lib/fonts に移動してfallbackディレクトリを作り、その中に日本語フォントへのシンボリックリンクを作成します。 デフォルトのUbuntu 18.04では Noto Sans CJK / Noto Serif CJK のどちらかを使う事になるでしょう。
cd /opt/jre1.8.0_191/lib/fonts/
mkdir fallback && cd fallback
sudo ln -s /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc .
sudo ln -s /usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc .
ちなみにUbuntuに限らず、Javaがデフォルトで対応しているOSごとのフォントサポート状況は以下のコマンドで確認できます。 対応するディレクトリがない=対応していない場合は上記のようなフォント設定が必要になる。
ls -altr /opt/jre1.8.0_191/lib/fontconfig*


ここまでくれば後は普通にJava Web Startが使えるようになります。 実行したい jnlpファイルを以下のコマンドで実行しましょう。
/opt/jre1.8.0_191/bin/javaws foobar.jnlp


今後、Java Web Startは上記3つのトラップをかい潜ってようやく使えるものになります。 執筆時点では2の問題が起きてないのでマシですが、来年ハマる人が続出しそう…。

0 件のコメント: