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

Java程序调用getAnnotation(Test.class)时触发ClassNotFoundException的解决办法

问题分析与解决方法

你的问题核心是运行时类路径中缺失JUnit Jupiter API的依赖——虽然编译阶段因为pom.xml中添加了依赖能正常通过,但运行main方法时JVM找不到org.junit.jupiter.api.Test类。而Override.class属于Java核心类库(java.lang包),JVM默认会加载该包下的类,所以替换后程序能正常运行。

以下是具体解决方案:

1. 修正JUnit依赖的Scope

检查pom.xml中JUnit Jupiter API的依赖配置,如果scope设置为test,该依赖仅会被加入测试代码的类路径,main程序运行时不会包含。需要将scope改为compile或者直接删除scope标签(默认scope为compile):

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.9.2</version> <!-- 使用你实际的版本号 -->
    <!-- 移除<scope>test</scope> 或改为<scope>compile</scope> -->
</dependency>

2. 确保运行时类路径包含JUnit依赖

用Maven运行程序

如果使用Maven执行main方法,推荐使用exec:java插件,它会自动将所有依赖(包括JUnit)加入运行类路径:

mvn exec:java -Dexec.mainClass="Lab12" -Dexec.args="com.yourpackage.YourTestClass"

命令行手动指定类路径

如果直接用java命令运行,需要手动将JUnit的jar包和项目编译后的class文件加入类路径:

# Windows系统用;分隔类路径
java -cp "target/classes;path/to/junit-jupiter-api-5.9.2.jar" Lab12 com.yourpackage.YourTestClass

# Linux/macOS系统用:分隔类路径
java -cp "target/classes:path/to/junit-jupiter-api-5.9.2.jar" Lab12 com.yourpackage.YourTestClass

3. IDE运行配置检查

如果在IDE(如IntelliJ IDEA、Eclipse)中运行,检查Run Configuration的Classpath配置:

  • 确保JUnit Jupiter API的jar包被包含在"Classpath"列表中
  • 若之前依赖是test scope,IDE可能默认不会将其加入main程序的运行类路径,需手动添加或调整依赖scope后重新导入Maven项目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:52:51