You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Java Function部署提示‘未找到HTTP触发器’问题求助

Java 17 Azure Functions部署后提示“No HTTP triggers found”问题排查

我用Java 17编写了一个Azure Function,本地运行正常,但部署后出现“No HTTP triggers found”提示。该问题从2024年1月31日开始出现,此前部署一切正常,不清楚Java相关环境有何变更。


相关配置与文件

host.json配置

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    }
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.*, 5.0.0)"
  }
}

部署文件列表

10:29:46 PM njs123: c:\trunk\jj\build\tmp\jar\MANIFEST.MF
10:29:46 PM njs123: c:\trunk\jj\build\azure-functions\jj-1706844397343\host.json
10:29:46 PM njs123: c:\trunk\jj\build\azure-functions\jj-1706844397343\local.settings.json
10:29:46 PM njs123: c:\trunk\jj\build\azure-functions\jj-1706844397343\HttpTriggerJava1\function.json
10:29:46 PM njs123: c:\trunk\jj\build\azure-functions\jj-1706844397343\jj-1.0-SNAPSHOT.jar
10:29:46 PM njs123: c:\trunk\jj\build\azure-functions\jj-1706844397343\lib\azure-functions-java-core-library-1.0.0.jar
10:29:46 PM njs123: c:\trunk\jj\build\libs\jj-1.0-SNAPSHOT.jar
10:29:46 PM njs123: c:\trunk\jj\build\classes\java\main\com\fun

函数代码

import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;

public class HttpTriggerJava1 {
    @FunctionName("HttpTriggerJava1")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.FUNCTION) 
            HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context) {
        context.getLogger().info("Java HTTP trigger processed a request.");
        String query = request.getQueryParameters().get("name");
        String name = request.getBody().orElse(query);
        if (name == null) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build();
        } else {
            return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
        }
    }
}

排查与解决步骤

  • 确认运行时版本匹配:Java 17需要搭配Azure Functions Runtime ~4版本,在Azure Portal的函数应用配置中,检查Runtime stack是否为Java 17,Version是否设置为~4。
  • 规范部署包结构:部署包需符合Azure要求的结构,根目录下应包含host.json、函数目录(含function.json)以及你的JAR包,不要上传local.settings.json等本地配置文件。
  • 锁定扩展包版本:将extensionBundle的version从[4.*,5.0.0)改为具体稳定版本(如[4.15.0,5.0.0)),避免自动更新到不兼容的扩展包。
  • 检查JAR包配置:确认JAR包的MANIFEST.MF中包含正确的函数类信息,确保Azure能扫描到带有@FunctionName注解的类。
  • 查看部署日志:在Azure Portal的函数应用日志流中,检查是否存在类加载失败、依赖缺失等错误,这些可能是触发器无法被识别的核心原因。
  • 重新构建部署包:删除本地构建缓存目录,重新构建生成干净的部署包后再部署。

内容的提问来源于stack exchange,提问作者user3364310

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:43:13