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

Quarkus执行mvn clean install时出现javax.inject.Provider类未找到异常

Quarkus测试报错:java.lang.NoClassDefFoundError: javax/inject/Provider

我在Quarkus项目中编写了Publisher实体类和对应的测试类,执行mvn clean install时测试抛出javax.inject.Provider找不到的异常,但我的代码里并没有直接使用javax相关内容,求解决思路。

Publisher实体类

import io.quarkus.hibernate.orm.panache.PanacheEntity;

import jakarta.persistence.Entity;
import java.time.Instant;

@Entity
public class Publisher extends PanacheEntity {

    // ======================================
    // =             Attributes             =
    // ======================================

    public String name;

    public Instant createdDate = Instant.now();

    // ======================================
    // =           Constructors             =
    // ======================================

    public Publisher(String name) {
        this.name = name;
    }

    public Publisher() {
    }

    @Override
    public String toString() {
        return "Publisher{" +
                "name='" + name + '\'' +
                ", createdDate=" + createdDate +
                ", id=" + id +
                '}';
    }
}

测试类

import io.quarkus.test.TestTransaction;
import io.quarkus.test.junit.QuarkusTest;
import org.agoncal.quarkus.panache.model.Publisher;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;

@QuarkusTest
public class PublisherRepositoryTest {
    @Test
    @TestTransaction
    public void shouldCreateAndFindPublisher() {
        Publisher publisher = new Publisher("name");

        publisher.persist(publisher);
        assertNotNull(publisher.id);

        publisher = publisher.findById(publisher.id);
        assertEquals("name", publisher.name);

    }
}

异常信息

-------------------------------------------------------------------------------
Test set: org.agoncal.quarkus.panache.repository.PublisherRepositoryTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 3.755 s <<< FAILURE! - in org.agoncal.quarkus.panache.repository.PublisherRepositoryTest
org.agoncal.quarkus.panache.repository.PublisherRepositoryTest.shouldCreateAndFindPublisher  Time elapsed: 0.002 s  <<< ERROR!
java.lang.RuntimeException: java.lang.NoClassDefFoundError: javax/inject/Provider
Caused by: java.lang.NoClassDefFoundError: javax/inject/Provider
Caused by: java.lang.ClassNotFoundException: javax.inject.Provider

解决思路

  • 排查依赖兼容性:Quarkus 2.x及以上版本全面迁移到Jakarta EE规范,若项目依赖中混入了旧的Java EE(javax)库,会引发API冲突。执行mvn dependency:tree查看依赖树,确认是否有间接引入javax.inject的依赖。
  • 替换为Jakarta版本依赖:如果发现存在javax相关依赖,将其替换为Jakarta EE版本,比如用jakarta.inject:jakarta.inject-api替代javax.inject:javax.inject-api。
  • 修正测试代码错误:测试中publisher.persist(publisher);是错误用法,PanacheEntity的persist()方法无需传入自身对象,应改为publisher.persist();,避免潜在问题。

内容的提问来源于stack exchange,提问作者Jan D.M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:50:05