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

NetBeans JDK17下java.lang.NoClassDefFoundError错误求助

解决测试报错:java.lang.NoClassDefFoundError: org/opentest4j/AssertionFailedError

待测试函数

@Override
public List<User> displayByDate(List<User> listUser) {
    if(listUser != null){
        Collections.sort(listUser, (User o1, User o2) -> o2.getUserDate().compareTo(o1.getUserDate()));
    }
    return listUser;
}

测试用例代码

public class UserImpTest {

UserImp userImp = new UserImp();

public UserImpTest() {
}

@Test
public void testDisplayByDate() {
    // 创建示例用户对象
    User user1 = new User(1, "John", new Date(122, 0, 15)); // 2022年1月15日
    User user2 = new User(2, "Alice", new Date(123, 1, 10)); // 2023年2月10日
    User user3 = new User(3, "Bob", new Date(121, 11, 1)); // 2021年12月1日

    // 创建未排序的用户列表
    List<User> userList = new ArrayList<>();
    userList.add(user1);
    userList.add(user2);
    userList.add(user3);

    // 创建预期的排序后列表
    List<User> expectedList = new ArrayList<>();
    expectedList.add(user2); // Alice(最新日期)
    expectedList.add(user1); // John
    expectedList.add(user3); // Bob(最早日期)

    // 调用displayByDate函数
    List<User> sortedList = userImp.displayByDate(userList);

    // 断言排序后的列表与预期一致
    Assertions.assertEquals(expectedList, sortedList);
}
}

问题描述

项目classpath文件截图:
项目classpath文件截图

使用NetBeans + JDK 17执行测试时,反复出现报错:
java.lang.NoClassDefFoundError: org/opentest4j/AssertionFailedError

解决方法

这个报错的核心原因是项目缺失opentest4j依赖——org.opentest4j.AssertionFailedError是JUnit 5依赖体系中的核心类,测试代码使用了JUnit 5的Assertions.assertEquals断言方法,但运行时找不到对应的类文件。结合你的环境,按以下场景处理:

场景1:项目用Maven管理

  1. 打开项目根目录下的pom.xml
  2. 在<dependencies>节点中添加opentest4j及JUnit 5的完整依赖:
<!-- opentest4j依赖 -->
<dependency>
    <groupId>org.opentest4j</groupId>
    <artifactId>opentest4j</artifactId>
    <version>1.3.0</version>
    <scope>test</scope>
</dependency>
<!-- JUnit 5核心依赖 -->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.9.2</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.9.2</version>
    <scope>test</scope>
</dependency>
  1. 右键项目 → 选择Maven → Reload Project,等待依赖下载完成后重新运行测试。

场景2:项目是普通Java项目(无构建工具)

  1. 下载opentest4j的jar包(推荐版本1.3.0,兼容JDK17)
  2. 在NetBeans中右键项目 → Properties → Libraries → Test Libraries → 点击Add JAR/Folder,选择下载好的opentest4j jar包添加
  3. 同时检查是否已添加JUnit 5的junit-jupiter-api.jar和junit-jupiter-engine.jar,若缺失需一并添加
  4. 重新运行测试

额外注意点

从你的classpath截图可见,项目仅添加了JUnit 4的junit.jar,但测试代码用的是JUnit 5的断言API,存在依赖版本不匹配问题。建议统一使用JUnit 5的依赖套件,或者将测试代码中的Assertions.assertEquals替换为JUnit 4的org.junit.Assert.assertEquals,并确保JUnit 4依赖正常。

内容的提问来源于stack exchange,提问作者Nguyen Minh Duc FGW HN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:20:44