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

Quarkus启动报错:HttpBinderConfiguration was not found 求助

Quarkus项目启动报错:HttpBinderConfiguration was not found

问题现象

基于Quarkus的项目此前运行正常,Java版本从11升级到17后也能正常工作,近期突然出现启动失败,核心堆栈报错如下:

2024-06-04 09:34:44,497 DEBUG [org.jbo.threads] (Quarkus Main Thread) JBoss Threads version 3.4.2.Final
2024-06-04 09:34:44,535 INFO  [io.qua.dep.dev.IsolatedDevModeMain] (main) Attempting to start live reload endpoint to recover from previous Quarkus startup failure
2024-06-04 09:34:44,535 INFO  [io.qua.dep.dev.IsolatedDevModeMain] (main) Attempting to start live reload endpoint to recover from previous Quarkus startup failure
Press [space] to restart, [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [h] for more options>
2024-06-04 09:34:44,546 WARN  [io.qua.run.log.LoggingSetupRecorder] (main) Log level ALL for category 'root' set below minimum logging level DEBUG, promoting it to DEBUG
2024-06-04 09:34:44,546 WARN  [io.qua.run.log.LoggingSetupRecorder] (main) Log level ALL for category 'root' set below minimum logging level DEBUG, promoting it to DEBUG
2024-06-04 09:34:44,715 WARN  [io.net.uti.con.DefaultPromise] (vert.x-acceptor-thread-0) An exception was thrown by io.vertx.core.net.impl.TCPServerBase$$Lambda$1372/0x0000023f817bb608.operationComplete(): java.lang.IllegalStateException: HttpBinderConfiguration was not found
    at io.quarkus.micrometer.runtime.binder.vertx.VertxMeterBinderAdapter.createHttpServerMetrics(VertxMeterBinderAdapter.java:50)
    at io.vertx.core.http.impl.HttpServerImpl.createMetrics(HttpServerImpl.java:71)
    at io.vertx.core.net.impl.TCPServerBase.lambda$listen$2(TCPServerBase.java:186)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
    at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
    at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
    at io.netty.util.concurrent.DefaultPromise.setSuccess(DefaultPromise.java:96)
    at 

调试确认:HttpBinderConfiguration已创建并完成配置,但在quarkus-micrometer创建指标虚拟服务器和端点时未被正确注入,导致VertxMeterBinderAdapter.createHttpServerMetrics中的httpBinderConfiguration为null。

项目环境

  • Java 17
  • Quarkus 2.10.2
  • Maven 3.8.8
  • quarkus-micrometer-registry-prometheus 2.10.2

pom.xml 核心内容

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>project</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <properties>
        <quarkus-operator-sdk.version>5.1.4</quarkus-operator-sdk.version>
        <java.version>17</java.version>
        <quarkus.version>2.10.2</quarkus.version>
        <quarkus.platform.version>${quarkus.version}</quarkus.platform.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>${quarkus.platform.group-id}</groupId>
                <artifactId>${quarkus.platform.artifact-id}</artifactId>
                <version>${quarkus.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.quarkiverse.operatorsdk</groupId>
            <artifactId>quarkus-operator-sdk</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-micrometer-registry-prometheus</artifactId>
        </dependency>
        <!-- 存在版本不一致的依赖 -->
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-junit5</artifactId>
            <version>2.16.12.Final</version>
            <scope>test</scope>
        </dependency>
        <!-- 其他依赖省略 -->
    </dependencies>
</project>

解决方案

1. 修复依赖版本不一致问题

观察pom.xml发现,quarkus-junit5手动指定了2.16.12.Final版本,与项目整体使用的Quarkus 2.10.2版本冲突,这会导致类加载或配置注入异常。将其版本改为与项目一致:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-junit5</artifactId>
    <version>${quarkus.version}</version>
    <scope>test</scope>
</dependency>

2. 清理缓存并重新构建

依赖缓存或构建残留可能引发此类问题,执行以下操作:

  • 清理Maven本地缓存:mvn clean install -U
  • 删除项目target目录后重新启动或构建

3. 升级Quarkus到稳定兼容版本

Quarkus 2.10.2属于旧版本,存在Micrometer与Vertx集成的已知问题,升级到同系列最新补丁版本(如2.10.7.Final)或更高稳定版本(如2.16.x系列),可修复此类配置注入bug,只需修改pom.xml中的quarkus.version即可。

4. 临时禁用Vertx HTTP指标(应急方案)

若需快速恢复服务,可临时关闭Micrometer对Vertx HTTP的指标收集,在application.properties中添加:

quarkus.micrometer.binder.vertx.http.enabled=false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:09:53