4

我正在使用 greenDao 访问我的 Android 手机中的数据库。一切似乎都很好,并且遵守了。但是当我运行程序时,它在 DaoMaster.java -> OpenHelper 类,onCreate 方法在 createAllTables(db, false); 处崩溃;

以下是异常消息:

>05-03 15:40:34.109: E/AndroidRuntime(28587): FATAL EXCEPTION: main
05-03 15:40:34.109: E/AndroidRuntime(28587): java.lang.NoClassDefFoundError: com.hook38.sporttimer.model.sql.DaoMaster
05-03 15:40:34.109: E/AndroidRuntime(28587):    at com.hook38.sporttimer.model.sql.DaoMaster$OpenHelper.onCreate(DaoMaster.java:42)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:165)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at com.hook38.sporttimer.controller.CountdownTimerStoreController.<init>(CountdownTimerStoreController.java:32)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at com.hook38.sporttimer.controller.CountdownTimerController.<init>(CountdownTimerController.java:57)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at com.hook38.sporttimer.CountDownTimerActivity.onCreate(CountDownTimerActivity.java:49)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at android.app.Activity.performCreate(Activity.java:4465)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at android.os.Looper.loop(Looper.java:137)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at android.app.ActivityThread.main(ActivityThread.java:4424)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at java.lang.reflect.Method.invokeNative(Native Method)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at java.lang.reflect.Method.invoke(Method.java:511)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-03 15:40:34.109: E/AndroidRuntime(28587):    at dalvik.system.NativeStart.main(Native Method)

我对 NoClassDefFoundError 做了一些研究,这意味着 CLASSPATH 设置不正确。但我检查了构建路径,greenDao.jar 在库中。有什么我错过了吗?

4

2 回答 2

7

我解决了这个问题。我使用的是 DaoExample 项目中的 greenDao.jar 文件。解决这个问题的方法是......从我的 java 构建路径中删除原始的 greenDao.jar。在我的项目下创建一个名为 libs 的文件夹。从 DaoExample 项目的 libs 文件夹中复制 geenDao.jar 文件,并将其粘贴到我自己项目的 libs 文件中。转到 Java 构建路径、库、导入 jar,然后添加新粘贴的 jar 文件。哇~

于 2012-05-04T02:13:02.353 回答
0

解决方案非常简单 - 确保导出 Maven 依赖项:

  1. Project Properties-> Java Build Path-> Order and Export-> 打勾Maven Dependencies 项目属性
  2. 清洁项目
于 2014-08-21T21:04:06.707 回答