首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JUnit ClassNotFoundError 快速排查:重新編譯、依賴範圍、運行配置三步走

     編輯:程式設計疑難解答

典型報錯


java.lang.ClassNotFoundException: com.example.MyTest
    at java.net.URLClassLoader.findClass...

MyEclipse 中 Java EE 項目跑 JUnit 報找不到類,但新建普通 Java 項目卻正常。

三步排查法

1. 強制全量重新編譯(最常見、最有效)

  • 菜單:Project → Clean... → 勾選項目 → Clean
  • 或右鍵項目 → Maven → Update Project → Force Update
  • 原因:增量編譯遺漏、輸出目錄不同步、緩存類文件損壞。

2. 檢查 JUnit 依賴範圍


<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope> <!-- 必須是 test,不要 compile -->
</dependency>
  • 若手動加 Jar,確保在 **Java Build Path → Libraries → JUnit** 且 **Order and Export** 勾選。
  • Java EE 項目若用 Maven,`mvn test-compile` 驗證測試代碼能否編譯。

3. 校驗運行配置

  • Run Configurations → JUnit → **Test 選單** → 選 **Run a single test** 或 **Run all tests in the selected project/package/folder**。
  • **Classpath** 頁籤確認 `target/test-classes`、`target/classes` 及依賴 Jar 均在列表中。
  • Working Directory 指向項目根目錄。

進階:模塊化項目 (Java 9+) 注意事項

  • `module-info.java` 中需 `requires junit;` 或 `--add-modules=ALL-MODULE-PATH`。
  • 測試類所在包需 `opens com.example to junit.platform.runner;`(反射訪問)。

一鍵修復腳本 (Maven 項目)


mvn clean test-compile surefire:test

徹底清理、編譯主/測試代碼、運行 Surefire 插件,繞過 IDE 緩存問題。

總結

90% 的 `ClassNotFound` 來自 **編譯輸出不同步**。養成「改代碼 → Clean → Build → Run」肌肉記憶,配合 Maven 標準目錄結構,JUnit 運行將零驚喜。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved