在 Eclipse ADT 更新後(特別是 ADT 17+),將第三方 JAR 放在專案根目錄下的 lib/ 資料夾並加入 Build Path,雖然編譯通過,但執行時拋出 java.lang.NoClassDefFoundError。原因在於 **ADT 新版規定:只有命名為 libs/(複數)的目錄會被自動打包進 APK**。
09-19 21:45:26.154: ERROR/AndroidRuntime(3654): java.lang.NoClassDefFoundError: com.scoreninja.adapter.ScoreNinjaAdapter
類別明明在 JAR 裡,Build Path 也加了,但 APK 內找不到。
lib/ → libs/libs/ 下的所有 JAR,加入 Build Path 並打包進 APK。libs/ 為「自動打包的原生庫目錄」。lib/、libraries/、jars/ 等其他名稱均**不會**被自動處理。classes.dex 或 lib/ 目錄是否包含該類別bin/classes/ 下搜尋對應 .class 檔Eclipse ADT 已於 2015 年停止更新。新專案請直接使用 **Android Studio + Gradle**,依賴管理只需在 build.gradle 宣告:
dependencies {
implementation files('libs/mylib.jar') // 本地 JAR
implementation 'com.github.user:repo:1.0.0' // JitPack
implementation 'com.squareup.okhttp3:okhttp:4.9.0' // Maven Central
}
Gradle 自動處理傳遞性依賴、版本衝突、多渠道打包,完全避免此類手動目錄命名問題。