錯誤現象
java.lang.NoClassDefFoundError: Could not find class 'com.tmlh.carnetwork.ui.member.CCareofMap'
referenced from method com.tmlh.carnetwork.ui.member.CareofmycarActivity.onCreate
清單檔已宣告,但運行時找不到類。專案原有類正常,僅新增類失敗。
根因:Eclipse 增量編譯/構建路徑不同步
Eclipse 有時未將新增 .class 輸出到 bin/ 或 target/,或構建路徑緩存未更新,導致運行時類路徑缺少新類。
解決步驟 (按成功率排序)
- Project → Clean → 全選 → Clean (最常見解決)
- 右鍵專案 → Build Path → Configure Build Path → Order and Export → 勾選所有項目 → Apply and Close
- 刪除 bin/ 目錄 → Project → Clean
- 檢查 .classpath 是否包含 src/ 輸出:
- 重啟 Eclipse → 重新導入專案
- 檢查 ProGuard/R8 配置是否誤刪新類** (Release 建構才會觸發)
Android 專屬補充
AndroidManifest.xml 宣告 `` 需與包名+類名完全一致
- 若為 Library Module,確認主模組
dependencies { implementation project(':lib') }
- Instant Run (舊版) 可能導致類加載異常,關閉:Settings → Build → Instant Run → 取消勾選
遷移建議
**Eclipse ADT 已於 2015 年停止更新**。強烈建議遷移至 **Android Studio (IntelliJ 基礎)**:
- Gradle 構建系統可靠、增量編譯穩定
- 內建 Lint、ProGuard/R8、APK Analyzer、Layout Inspector
- Kotlin 第一公民支援、Jetpack Compose 預覽
- 遷移:File → New → Import Project → 選擇 Eclipse 專案根目錄 → 自動轉換 Gradle
總結
Eclipse 新增類 NoClassDefFoundError 90% 是**增量編譯/輸出目錄不同步**。Project → Clean 通常即時修復。長期解決:遷移 Android Studio,告別 Eclipse 歷史包袱。