Android Build Path上具有必需项目的NoClassDefFoundError

时间:2012-11-10 03:28:47

标签: java android build

我的Android应用程序在其构建路径中包含所需的Java项目。但是,它在运行时抛出NoClassDefFoundError,就像配置错误的“lib”文件夹一样。

有没有办法在构建路径中包含此项目而不会导致运行时错误?

我知道我可以将它用作外部jar,但我强烈希望它是应用程序构建路径上的另一个项目。这样,每次我对它进行一些改动时,我都可以避免重新编译jar的麻烦。

这是我得到的确切logcat消息:

11-09 20:06:00.871: E/AndroidRuntime(1699): FATAL EXCEPTION: main
11-09 20:06:00.871: E/AndroidRuntime(1699): java.lang.NoClassDefFoundError: reproducers.SelectionReproducer
11-09 20:06:00.871: E/AndroidRuntime(1699):     at com.gamma.MainActivity.onCreate(MainActivity.java:37)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at android.app.Activity.performCreate(Activity.java:5008)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at android.os.Looper.loop(Looper.java:137)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at android.app.ActivityThread.main(ActivityThread.java:4745)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at java.lang.reflect.Method.invokeNative(Native Method)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at java.lang.reflect.Method.invoke(Method.java:511)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-09 20:06:00.871: E/AndroidRuntime(1699):     at dalvik.system.NativeStart.main(Native Method)

我在输入这个时发现了答案,但对于像我这样的菜鸟,它并不是很明显。所以,我仍然会问这个问题并发布解决方案。希望这有帮助!

1 个答案:

答案 0 :(得分:3)

解决方案是将所需项目配置为“导出”,这可以在Eclipse中完成,如下所示:

  1. 右键单击依赖项目(将包括其他项目的项目。)
  2. 导航到属性 - > Java构建路径。
  3. 在“项目”标签下,确认已添加所需项目。
  4. 在“订购和导出”标签下,选中所需项目旁边的框。
  5. 你已经完成了!
  6. 步骤4将项目标记为“已导出”。这意味着它对需要该项目的项目可见,并且出于某种原因,这使ADT感到高兴。

    另一方面,我的Eclipse(Helios)版本甚至没有显示复选框的功能 - 我必须在official Eclipse documentation上查找。