今日私は走ったapt upgrade
Ubuntu 18.04 LTS以降では、インストールされているJavaFX 8アプリケーション(内部で開発されたツール)が機能しなくなりました。
アプリケーションを実行しても、次のエラーが発生するだけです。
$ Java -jar app.jar
Error: Could not find or load main class ui.Main
結局のところ、Canonicalはopenjfxの新しいバージョンを出荷することを決定しました。 (ちなみに、バージョンの変更/決定を見ることができる場所はありますか?)
関連情報は/var/log/apt/history.log
にあります:
Start-Date: 2019-04-29 07:10:19
Commandline: apt upgrade
Requested-By: tannerli
Install: [snip]
Upgrade: [...]
openjfx:AMD64 (8u161-b12-1ubuntu2, 11.0.2+1-1~18.04.2)
openjfx-source:AMD64 (8u161-b12-1ubuntu2, 11.0.2+1-1~18.04.2)
libopenjfx-Java:AMD64 (8u161-b12-1ubuntu2, 11.0.2+1-1~18.04.2)
libopenjfx-jni:AMD64 (8u161-b12-1ubuntu2, 11.0.2+1-1~18.04.2)
[...]
LaunchPad には未解決のバグがあり、これについて this one など、さまざまなStackExchangeサイトで同様の質問がかなりあります。それらのどれも私の特定のニーズに適合しません。この日の実際の解決策はないようですが、
回避策
すべてのopenjfxパッケージを前のバージョンに明示的にダウングレードします。
$ Sudo apt install openjfx=8u161-b12-1ubuntu2 libopenjfx-Java=8u161-b12-1ubuntu2 libopenjfx-jni=8u161-b12-1ubuntu2 openjfx-source=8u161-b12-1ubuntu2
影響を受けるパッケージを控えて、次のapt upgrade
で問題が再発しないようにします。
$ Sudo apt-mark hold libopenjfx-Java libopenjfx-jni openjfx openjfx-source
これは、次回のアップグレード時に情報として表示されます。
$ Sudo apt upgrade
[...]
The following packages have been kept back:
libopenjfx-Java libopenjfx-jni openjfx openjfx-source
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.