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

Quarkus单元测试执行报错:缺失类依赖问题求解决

解决Quarkus单元测试启动时的ClassNotFoundException问题

问题场景

测试代码如下:

@QuarkusTest
class AccountResourceTest {
    @BeforeEach
    void setUp() {
    }

    @Test
    void getUserProfile() {    
        assertEquals("UserTest", "UserTest");
    }
}

执行测试时抛出以下错误:

java.lang.RuntimeException: io.quarkus.bootstrap.BootstrapException: Failed to create the application model for backend-account::jar:2024.3.1-SNAPSHOTnull

    at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:642)
    at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:726)
    at java.base/java.util.Optional.orElseGet(Optional.java:364)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: io.quarkus.bootstrap.BootstrapException: Failed to create the application model for backend-account::jar:2024.3.1-SNAPSHOTnull
    at io.quarkus.bootstrap.BootstrapAppModelFactory.resolveAppModel(BootstrapAppModelFactory.java:308)
    at io.quarkus.bootstrap.app.QuarkusBootstrap.bootstrap(QuarkusBootstrap.java:133)
    at io.quarkus.test.junit.AbstractJvmQuarkusTestExtension.createAugmentor(AbstractJvmQuarkusTestExtension.java:190)
    at io.quarkus.test.junit.QuarkusTestExtension.doJavaStart(QuarkusTestExtension.java:218)
    at io.quarkus.test.junit.QuarkusTestExtension.ensureStarted(QuarkusTestExtension.java:609)
    at io.quarkus.test.junit.QuarkusTestExtension.beforeAll(QuarkusTestExtension.java:659)
    ... 1 more
Caused by: java.lang.RuntimeException: Failed to create application model resolver for backend-account
    at io.quarkus.bootstrap.BootstrapAppModelFactory.getAppModelResolver(BootstrapAppModelFactory.java:165)
    at io.quarkus.bootstrap.BootstrapAppModelFactory.resolveAppModel(BootstrapAppModelFactory.java:293)
    ... 6 more
Caused by: java.lang.RuntimeException: Cannot get declared constructors from class org.apache.maven.profiles.activation.FileProfileActivator
    at io.smallrye.beanbag.sisu.Sisu.findConstructor(Sisu.java:874)
    at io.smallrye.beanbag.sisu.Sisu.addBeanFromXml(Sisu.java:453)
    at io.smallrye.beanbag.sisu.Sisu.addClassLoader(Sisu.java:124)
    at io.smallrye.beanbag.maven.MavenFactory.<init>(MavenFactory.java:71)
    at io.smallrye.beanbag.maven.MavenFactory.create(MavenFactory.java:96)
    at io.smallrye.beanbag.maven.MavenFactory.create(MavenFactory.java:111)
    at io.smallrye.beanbag.maven.MavenFactory.create(MavenFactory.java:124)
    at io.quarkus.bootstrap.resolver.maven.BootstrapMavenContext.configureMavenFactory(BootstrapMavenContext.java:889)
    at io.quarkus.bootstrap.resolver.maven.BootstrapMavenContext.initRepoSystemAndManager(BootstrapMavenContext.java:876)
    at io.quarkus.bootstrap.resolver.maven.BootstrapMavenContext.getRepositorySystem(BootstrapMavenContext.java:292)
    at io.quarkus.bootstrap.resolver.maven.MavenArtifactResolver.<init>(MavenArtifactResolver.java:114)
    at io.quarkus.bootstrap.BootstrapAppModelFactory.getAppModelResolver(BootstrapAppModelFactory.java:161)
    ... 7 more
Caused by: java.lang.NoClassDefFoundError: org/codehaus/plexus/util/interpolation/ValueSource
    at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3549)
    at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2727)
    at io.smallrye.beanbag.sisu.Sisu.findConstructor(Sisu.java:872)
    ... 18 more
Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.util.interpolation.ValueSource
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
    ... 22 more

当前使用的测试相关依赖:

<!-- Testing -->
<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>io.quarkus</groupId>
    <artifactId>quarkus-junit5-mockito</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-test-security</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.wiremock</groupId>
    <artifactId>wiremock</artifactId>
    <version>${org.wiremock.version}</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-jacoco</artifactId>
    <scope>test</scope>
</dependency>

解决步骤

  • 添加缺失的依赖:错误根源是找不到org.codehaus.plexus.util.interpolation.ValueSource类,该类属于plexus-utils包。在pom.xml中添加以下依赖:
    <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-utils</artifactId>
        <version>3.5.1</version> <!-- 版本可根据Quarkus实际版本调整,确保兼容性 -->
        <scope>test</scope>
    </dependency>
    
  • 清理Maven缓存:执行mvn clean install -U命令,强制更新依赖并清理本地仓库中可能损坏的缓存文件。
  • 检查版本兼容性:确保Quarkus版本(2024.3.1-SNAPSHOT)与所有测试依赖版本匹配,建议使用Quarkus提供的BOM来统一管理依赖版本,避免冲突。
  • 排查依赖冲突:运行mvn dependency:tree查看依赖树,检查是否有其他依赖排除了plexus-utils,若有则调整依赖的排除规则。
  • 切换测试执行方式:如果IDE中执行失败,尝试用Maven命令行执行mvn test,排除IDE配置问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:44:51