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

使用Quarkus与Bicep部署Azure Function时DeployFunctionAppTask空指针异常求助

问题:Quarkus部署Azure Function App时出现空指针异常

我正在用Bicep模板和Quarkus框架部署Azure Function App,但部署失败,报错信息如下:

任务':quarkus:deploy'执行失败。

io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.azure.functions.deployment.AzureFunctionsDeployCommand#deploy threw an exception: java.lang.NullPointerException
at com.microsoft.azure.toolkit.lib.appservice.task.DeployFunctionAppTask.doExecute(DeployFunctionAppTask.java:86)
at io.quarkus.azure.functions.deployment.AzureFunctionsDeployCommand.deployArtifact(AzureFunctionsDeployCommand.java:355)
at io.quarkus.azure.functions.deployment.AzureFunctionsDeployCommand.deploy(AzureFunctionsDeployCommand.java:120)
...

堆栈跟踪显示DeployFunctionAppTask.doExecute方法内存在空值使用情况,怀疑和缺失的配置或环境变量有关。

已采取的排查步骤:

  • 验证存储账户名称和密钥已正确获取;
  • 确认AzureWebJobsStorage和FUNCTIONS_WORKER_RUNTIME环境变量已在流水线和函数应用中设置;
  • 确认Bicep模板已部署所有必需资源并包含dependsOn以避免竞争条件;
  • 使用Gradle的--debug和--stacktrace选项运行部署,但未找到空指针异常的明确原因。

请问:

  1. 什么原因会导致DeployFunctionAppTask.doExecute方法出现空指针异常?
  2. 使用Quarkus部署Azure Function App时,是否还有其他可能遗漏的配置或环境变量?
  3. 如何进一步调试以确定根本原因?
@FunctionName("GetReportsByAirportCode")
fun getReportsByAirportCode(
    @HttpTrigger(
        name = "req",
        methods = [HttpMethod.GET],
        authLevel = AuthorizationLevel.ANONYMOUS,
        route = "v1/reports/by-airport-code"
    ) request: HttpRequestMessage<Any>,
    context: ExecutionContext
): HttpResponseMessage {
    return try {
        val bearerToken = request.headers["authorization"]
            ?: return unauthorizedResponse(request, "Missing Authorization Header")
        val profile = authService.validateAccessTokenAndGetProfileRequest(bearerToken)

        val query = request.queryParameters["query"]
        val page = request.queryParameters["page"]?.toIntOrNull() ?: -1
        val size = request.queryParameters["size"]?.toIntOrNull() ?: -1
        if (page < 0 || size < 0 || size > maxPageSize) {
            return badRequestResponse(request, "Invalid parameters")
        }

        val assignedAirports = authService.getAssignedAirports(bearerToken)
        if (assignedAirports.isEmpty()) {
            return forbiddenResponse(request, "User is not assigned to any airports")
        }

        val reports = reportRepository.findByAirportCodes(page, size, assignedAirports, query)

        request.createResponseBuilder(HttpStatus.OK)
            .header("Content-Type", "application/json")
            .body(reports)
            .build()
    } catch (e: Exception) {
        context.logger.severe("Error fetching reports: ${e.message}")
        e.toResponse(request)
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:35:19