web-dev-qa-db-ja.com

openjfxの最近のアップグレードにより、インストールしたアプリケーションが壊れました

今日私は走ったapt upgrade Ubuntu 18.04 LTS以降では、インストールされているJavaFX 8アプリケーション(内部で開発されたツール)が機能しなくなりました。

アプリケーションを実行しても、次のエラーが発生するだけです。

$ Java -jar app.jar
Error: Could not find or load main class ui.Main
2
tannerli

結局のところ、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.
2
tannerli