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
相关产品推荐
相关产品推荐

