今更Java8でAzureFunctionsを構築する人なんていないと思いますが、構築の際に沼ったのでメモとして記載します(試してないですが多分Java11でも発生する)。
VSCodeからだと簡単にdevcontainerの環境を作ることができます。
-
Dev Containers
の拡張機能をインストール -
F1
を押して開発コンテナー: コンテナー機能の構築(Dev Containers: Configure Container Features)
を選択 -
Azure Functions (Java)
を選択 -
8-bullseye
を選択(8-bookworm
を選択するとコンテナビルド時にエラーで止まる) - インストールする追加機能は自由に
- オプションも自由に
開発コンテナー: コンテナーで再度開く(Dev Containers: Reopen in Container)
これでコンテナ完成かと思いきや
バージョン確認
$ java -version
openjdk version "1.8.0_372"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_372-b07)
OpenJDK 64-Bit Server VM (Temurin)(build 25.372-b07, mixed mode)
$ mvn -v
Unrecognized option: --enable-native-access=ALL-UNNAMED
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Mavenのバージョン情報が取れない・・・
色々調べているとMavenの4.0.0
がインストールされているっぽい
4.0.0
はJava17以上が必須要件
Mavenのバージョン指定
devcontainer.json
"ghcr.io/devcontainers/features/java:1": {
"version": "none",
"installMaven": true,
"mavenVersion": "3.8.8"
}
mavenVersionを追記しましょう(投稿時の安定版は3.8.8)。
コンテナのリビルドを行い、再度バージョン確認
$ mvn -v
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /usr/local/sdkman/candidates/maven/current
Java version: 1.8.0_372, vendor: Temurin, runtime: /usr/local/sdkman/candidates/java/8.0.372-tem/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.133.1-microsoft-standard-wsl2", arch: "amd64", family: "unix"
ここまでたどり着くのに大分沼りました・・・
プロジェクト作成
あとはMS公式のテンプレートがあるのでそれに沿って構築すれば動作確認までできます。
同じように沼った人をこの記事で一人でも助けられたら幸いです。