Quarkus应用构建报错java.lang.NoSuchMethodError问题求助
构建Quarkus应用时遭遇NoSuchMethodError构建失败问题分析与解决
错误信息
Failed to execute goal io.quarkus:quarkus-maven-plugin:2.6.0.Final:build (default) on project irxpp-jobs: Execution default of goal io.quarkus:quarkus-maven-plugin:2.6.0.Final:build failed: An API incompatibility was encountered while executing io.quarkus:quarkus-maven-plugin:2.6.0.Final:build: java.lang.NoSuchMethodError: 'io.quarkus.paths.PathCollection io.quarkus.bootstrap.app.QuarkusBootstrap.getApplicationRoot()'
项目依赖配置
<dependencies> <!-- https://mvnrepository.com/artifact/io.quarkus/quarkus-hibernate-orm --> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-hibernate-orm</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.webjars/jquery --> <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.5.0</version> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-resteasy</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-smallrye-openapi</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-resteasy-jackson</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-hibernate-orm-panache</artifactId> </dependency> <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> </dependency> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-zipfile</artifactId> <version>3.10.0</version> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-junit5-mockito</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-narayana-jta</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils --> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.4</version> </dependency> <!-- https://mvnrepository.com/artifact/io.quarkus/quarkus-hibernate-orm-deployment --> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-hibernate-orm-deployment</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-junit5</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.mashape.unirest</groupId> <artifactId>unirest-java</artifactId> <version>1.4.9</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.1.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-core --> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-core</artifactId> <version>1.12.276</version> </dependency> <!-- https://mvnrepository.com/artifact/software.amazon.awssdk/s3 --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> <version>2.17.40</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-s3 --> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> <version>1.12.276</version> </dependency> <!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-sns --> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-sns</artifactId> <version>1.11.714</version> </dependency> <!-- https://mvnrepository.com/artifact/io.quarkus/quarkus-agroal-spi --> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-agroal-spi</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/io.quarkus/quarkus-datasource-deployment --> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-datasource-deployment</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/io.quarkus/quarkus-core-deployment --> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-core-deployment</artifactId> <version>2.7.6.Final</version> </dependency> <!-- https://mvnrepository.com/artifact/io.quarkus/quarkus-jdbc-postgresql --> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-jdbc-postgresql</artifactId> <version>2.7.1.Final</version> </dependency> </dependencies>
问题分析
- Quarkus版本不一致:Maven插件使用2.6.0.Final,但部分Quarkus核心依赖(如
quarkus-core-deployment用2.7.6.Final、quarkus-jdbc-postgresql用2.7.1.Final)版本更高,导致API不兼容——高版本中QuarkusBootstrap.getApplicationRoot()方法的签名或存在性与2.6.0.Final不匹配,触发NoSuchMethodError。 - 冗余/错误依赖:
- 存在重复的
commons-lang3依赖。 - 手动引入了
quarkus-hibernate-orm-deployment、quarkus-datasource-deployment等deployment类型依赖,这类依赖属于Quarkus构建时的内部依赖,无需手动添加到项目依赖中。
- 存在重复的
解决方案
1. 统一Quarkus依赖版本
在pom.xml中添加Quarkus BOM,让所有Quarkus相关依赖自动对齐版本,避免手动指定版本导致的不一致:
<dependencyManagement> <dependencies> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-bom</artifactId> <version>2.6.0.Final</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
然后移除所有Quarkus依赖的手动版本指定(如quarkus-core-deployment的2.7.6.Final、quarkus-jdbc-postgresql的2.7.1.Final)。
2. 清理冗余依赖
- 删除重复的
commons-lang3依赖,只保留一个即可。 - 删除所有deployment类型的依赖:
quarkus-hibernate-orm-deployment、quarkus-datasource-deployment、quarkus-core-deployment。
3. 清理Maven缓存并重新构建
执行以下命令强制更新依赖并重新构建:
mvn clean install -U
内容的提问来源于stack exchange,提问作者Suni mv
相关产品推荐
相关产品推荐

