2020/09/30 追記
v0.138.0 から,Java 8 の Configuration が復活しました。
Java を Remote-Containers 拡張でやろうと思って導入したら、いきなり詰まったのでメモ。
詰まった点
VSCode Remote Containers Java
とかのキーワードでググると、いくつか記事が出てくる。
参照すると、「Remote-Containers: Add Development Container Configuration Files
から Java (8|11|14)
を選んで〜〜」というように説明されているが、実際に試すとバージョン別のConfigurationが見つからない。
下図のように、Java
だけがあり、あとは Azure Function 向けの Configuration だ。
これを選ぶと、JDK 11 の .devcontainer
が取得されるのだが、
今回は8系の環境を作りたかったので少し困った。
理由
vscode-java が Java 11 以上を要求するようになったことを受けて、Predefined Configurations に対して以下の PR が行われたため(今回詰まった点に対応する部分を太字にしています)。
- Removes
java-8
andjava-8-tomcat
- Consolidates
java-11
andjava-14
into one definition with a build arg to pick the version.
It usesbuster
as the distro since there's no Oracle one for 11.- Adds args to let people opt into installing their preferred version of Maven or Gradle with just a tweak to
devcontainer.json
- Resolves the issues with cleanup highlighted in #422
- Improves layering so that maven or Gradle can be enabled without having to also re-do the common script
「java-8
と java-8-tomcat
の Configuration をなくして、java-11
とjava-14
のConfigurationを統合したよ」と。
で、これは v0.131.0 から有効になっています。
11 未満をどうにかする場合
以下の2通りかなと思います。
- v0.131.0 未満の Remote-Containers 拡張をバージョン指定でインストールする。
- JDK 11 で、コンパイルオプションの
--source
とか--target
を使って頑張る。
11 以上にする場合
上記の 2. に書いてあるとおり、build argument でバージョンを変更できます。
devcontainer.json
の以下です。
"args": {
// Update the VARIANT arg to pick a Java version >= 11
"VARIANT": "11",
// 略
}