3

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

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

我知道我可以将它用作外部 jar,但我强烈希望它成为应用程序构建路径上的另一个项目。这样我就可以避免每次对 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)

我在打字时发现了答案,但对于像我这样的菜鸟来说,这并不是很明显。所以,我仍然会提出问题并发布解决方案。希望这可以帮助!

4

1 回答 1

3

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

  1. 右键单击依赖项目(将包含其他项目的项目。)
  2. 导航到属性 -> Java 构建路径。
  3. 在“项目”选项卡下,确认您需要的项目已添加。
  4. 在“订购和导出”选项卡下,选中所需项目旁边的框。
  5. 你完成了!

第 4 步将项目标记为“已导出”。这意味着它对需要这个项目的项目是可见的,并且出于某种原因,这让 ADT 很高兴。

附带说明一下,我的 Eclipse (Helios) 版本甚至没有显示复选框的作用——我必须在官方 Eclipse 文档中查找它。

于 2012-11-10T03:28:46.637 回答