ソースからOpenJDKをコンパイルする際、最新の一般提供バージョン( OpenJDK 10.0.1 )はOpenJDK 9または10を要求します。ただし、JDK 11は 9月までリリースされません2018 。
しかし、驚いたことに、apt search openjdk
を実行すると、結果は次のようになります。
...
openjdk-11-jdk - OpenJDK Development Kit (JDK)
...
openjdk-8-jdk - OpenJDK Development Kit (JDK)
...
OpenJDK 9または10はありません!
待ってください、それはOpenJDK 11ですか?たぶんベータリリース?いや...
だから私はapt show openjdk-11-jdk
を見ました:
Package: openjdk-11-jdk
Version: 10.0.1+10-3ubuntu1
...
OpenJDK 10がopenjdk-11- *?としてパッケージ化されているのはなぜですか?
これは、それらのパッケージがリリースされるとOpenJDK 11になるためです。 このメーリングリストの投稿 を参照してください:
Ubuntu Foundationsチームを代表して、OpenJDKのSRU例外をリクエストしています。私たちの計画は、OpenJDK 10をデフォルトのJRE/JDK 1 Bionicとしてリリースし、メインのデフォルトのJRE/JDKを2018年9月/ 10月にSRUとしてOpenJDK 11に移動することです。
=提案された計画=
BionicはOpenJDK 10とともにデフォルトのJRE/JDKとしてリリースされ、OpenJDK 11はGAに到達すると置き換えられます。
...
リリース後、bionicでOpenJDK 11に切り替える場合、リリース時にBionicでOpenJDK 8をデフォルトのJRE/JDKとして使用しないようにする必要があります。8と11の間に存在する追加のインターフェイスデルタはアーカイブを破損にさらすだけでなく、また、JDKの外部コンシューマーが破損にさらされます。それに比べて、OpenJDK 10とOpenJDK 11の間のインターフェースデルタは、特にすでにわかっているOpenJDK 8とOpenJDK 9の間のデルタと比較して、かなり小さいと予想されます。したがって、18.04でOpenJDK 10をデフォルトJDKとしてリリースし、リリースされるとOpenJDK 11に移行する必要があります。
openjdk-11-*
のソースパッケージが実際に openjdk-lts
と呼ばれる理由でもあります。
バグレポート が提出されました-購読してください(ただし、追加する新しい情報がない限りコメントしないでください)。 Ubuntu開発者のJeremy Bichaが応答しました:
その目的は、Ubuntu 18.04 LTSでopenjdk-11を11にアップグレードすることです。それがそのように命名された理由です。これは大きな変更であり、準備に時間がかかります。それが行われるので、それが行われることを要求する必要はありません。
Ubuntu 18.04 LTSはOpenJDK 11がリリースされる数ヶ月前にリリースされたため、Ubuntu 18.04 LTSがリリースされる前にOpenJDK 11を提供することはできませんでした。
https://lists.ubuntu.com/archives/ubuntu-release/2018-March/004364.html
ご不便おかけしてすみません。
2018-11-24:ETAを要求しないでください。これは、このバグを購読している全員に電子メールを送信しますが、バグの修正には役立ちません。
このバグは現在修正中です。 openjdk 11.0.1は18.10に更新され、18.04 LTSで迅速に処理する必要があるセキュリティ更新がありました。 11.0.1は、準備ができたら18.04 LTSになりますが、注意深い調整が必要な大きな変更です。
2019-02-26:このバグはバグ1814133で既に処理されているため、重複としてマークしています。ここではなく、そのバグについてさらに議論する必要があります。
新しいバグレポート が行われる必要があるすべての変更を追跡するために開かれ、それらのlotがあります-大まかな140カウント。バグレポートからの抜粋:
この移行は、openjdk-10からopenjdk-11へのopenjdk-ltsのセキュリティ更新です。これにより、ランタイムとFTBFSの問題が発生し、複数のパッケージのバックポートもセキュリティポケットに入れる必要があります。
パッケージは https://launchpad.net/~openjdk-11-transition チームの下のPPAでビルドされています。 PPAはセキュリティポケットのみに依存し、段階的に分離されています。
財団とセキュリティチームの間で合意されたプロセスは、PPAのパッケージをbionic-proposedにバイナリコピーし、移行の問題をチェックし、保留中の問題がない-bionic-securityにコピーすることです。
[...]
いくつかのパッケージもCosmicで更新する必要があるかもしれませんが、例外としてBionic移行が完了した後に行われます。
また、別のUbuntu開発者 TiagoStürmerDaitx氏 :
[我々]は、この移行の影響を受けるJavaアプリを更新する予定です。
具体的には、openjdk-11で正しく実行できないパッケージが調査され、更新の候補となります。この更新は、必ずしも最新バージョンを使用することを意味するものではありません。単にopenjdk-11で動作するように変更を適用またはバックポートするだけです。
現時点ではまだETAはありません。かなりの数のパッケージが更新され、移行チームによって維持されているさまざまなPPAに追加されているので、テストを支援したい場合はチェックアウトしてください。
修正がリリースされたようです。これで、apt show openjdk-11-jdk
が表示されます。
Package: openjdk-11-jdk
Version: 11.0.2+9-3ubuntu1~18.04.3
Java -version
の出力は次のとおりです。
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment (build 11.0.2+9-Ubuntu-3ubuntu118.04.3)
OpenJDK 64-Bit Server VM (build 11.0.2+9-Ubuntu-3ubuntu118.04.3, mixed mode, sharing)
上記のmuruの回答をご覧ください。
ただし、回避策として、openjdk 11を手動でインストールし、update-alternativesに追加してバージョンを切り替えることができます。公式パッケージが更新されたら、それに切り替えることができます。以下を参照して方法を確認してください。
$ wget https://download.Java.net/Java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz -O /tmp/openjdk-11.0.2_linux-x64_bin.tar.gz
$ Sudo tar xfvz /tmp/openjdk-11.0.2_linux-x64_bin.tar.gz --directory /usr/lib/jvm
/usr/lib/jvm/jdk-11.0.2の下にjdkを展開します
次に、代替システムに追加します
Sudo sh -c 'for bin in /usr/lib/jvm/jdk-11.0.2/bin/*; do update-alternatives --install /usr/bin/$(basename $bin) $(basename $bin) $bin 100; done'
Sudo sh -c 'for bin in /usr/lib/jvm/jdk-11.0.2/bin/*; do update-alternatives --set $(basename $bin) $bin; done'
代替案でそれを参照してください
$ Sudo update-alternatives --config Java
There are 3 choices for the alternative Java (providing /usr/bin/Java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/Java-11-openjdk-AMD64/bin/Java 1101 auto mode
1 /usr/lib/jvm/Java-11-openjdk-AMD64/bin/Java 1101 manual mode
2 /usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java 1081 manual mode
* 3 /usr/lib/jvm/jdk-11.0.2/bin/Java 100 manual mode
Press <enter> to keep the current choice[*], or type selection number: 3
動作確認
$ Java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)