LoginSignup
3
0

More than 3 years have passed since last update.

Azure FunctionのJavaでFailed to start Worker Channel. Process fileName: %JAVA_HOME%/bin/javaエラーが出た時の対処法

Last updated at Posted at 2021-04-25


Azure FunctionsをJavaで実装するため、Mavenのazure-functions-archetypeを使ってプロジェクトを作成しました。動作環境はDocker上のDebian 10.9です。手元で実行できるように
.NET Core 3.1.408Azure Functions Core Toolsもインストールしました。

ドキュメントどおりに実行したところ

mvn azure-functions:run

以下のエラーになりました。

Failed to start Worker Channel. Process fileName: %JAVA_HOME%/bin/java

Javaのパスに関連する問題に見えます。ちなみにwhich javaの結果は以下です。

which java
/usr/bin/java

エラーメッセージを調べると以下のStackOverflowがひっかかりました。どうやらazure-functions-core-toolsの設定ファイル「worker.config.json」に関するもので、自分の環境に合わせて修正が必要なようです。

worker.config.jsonは以下にありました。

/usr/lib/azure-functions-core-tools-3/workers/java/worker.config.json

開いてみると以下の内容で、defaultExecutablePathで%JAVA_HOMEが使われています。

{
    "description": {
        "language": "java",
        "extensions": [".jar"],
        "defaultExecutablePath": "%JAVA_HOME%/bin/java",
        "defaultWorkerPath": "azure-functions-java-worker.jar",
        "arguments": ["-XX:+TieredCompilation -XX:TieredStopAtLevel=1 -noverify -Djava.net.preferIPv4Stack=true -jar", "%JAVA_OPTS%", "%AZURE_FUNCTIONS_MESH_JAVA_OPTS%"]
    }
}

StackOverflowにあるとおり、defaultExecutablePathを環境に合わせて適切なパスにするとエラーが解消しました。

修正前

"defaultExecutablePath": "%JAVA_HOME%/bin/java",

修正後

"defaultExecutablePath": "/usr/bin/java",

StackOverflowの情報からはファイルがどこにあるのか読み取れなかったので、解決に少し手間取りました。同じエラーでハマった方の解決方法になれば幸いです。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0