2012-05-28 125 views
6

有一个名为TestAndroid的android项目。我能够在我的Android设备上运行它没有问题。不过,我希望能够使用其他项目的代码。所以我去我的构建路径并添加项目测试。测试是一个使用java6的标准java项目。 Test项目有一个类Test,它只是一个空类。Android项目无法在eclipse中引用其他项目

虽然我在TestAndroid中创建了一个Test实例,但我得到了一个运行时错误,这里是它的混乱。这是我从logcat得到的错误。

05-27 21:47:49.976: E/dalvikvm(27493): Could not find class 'com.tests.eclipseisbroken.Test', referenced from method com.tests.eclipseisbroken.TestAndrodiActivity.onCreate 
05-27 21:47:49.986: W/dalvikvm(27493): VFY: unable to resolve new-instance 11 (Lcom/tests/eclipseisbroken/Test;) in Lcom/tests/eclipseisbroken/TestAndrodiActivity; 
05-27 21:47:49.986: D/dalvikvm(27493): VFY: replacing opcode 0x22 at 0x0008 
05-27 21:47:49.986: D/dalvikvm(27493): VFY: dead code 0x000a-000d in Lcom/tests/eclipseisbroken/TestAndrodiActivity;.onCreate (Landroid/os/Bundle;)V 
05-27 21:47:50.026: D/AndroidRuntime(27493): Shutting down VM 
05-27 21:47:50.046: W/dalvikvm(27493): threadid=1: thread exiting with uncaught exception (group=0x40028a00) 
05-27 21:47:50.056: E/AndroidRuntime(27493): FATAL EXCEPTION: main 
05-27 21:47:50.056: E/AndroidRuntime(27493): java.lang.NoClassDefFoundError: com.tests.eclipseisbroken.Test 
05-27 21:47:50.056: E/AndroidRuntime(27493): at com.tests.eclipseisbroken.TestAndrodiActivity.onCreate(TestAndrodiActivity.java:16) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1065) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2745) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2797) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at android.app.ActivityThread.access$2300(ActivityThread.java:135) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2132) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at android.os.Looper.loop(Looper.java:143) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at android.app.ActivityThread.main(ActivityThread.java:4914) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at java.lang.reflect.Method.invokeNative(Native Method) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at java.lang.reflect.Method.invoke(Method.java:521) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
05-27 21:47:50.056: E/AndroidRuntime(27493): at dalvik.system.NativeStart.main(Native Method) 

我想一定是坏了我的Eclipse安装,因为我有一个项目是我不得不引用其他项目和它的工作。我宁愿现在修复它,完全重新安装日食和我所有的插件。如果有人知道什么是错的,可以帮助我,我将不胜感激。谢谢!!

+0

请参阅本文档 - http://developer.android.com/guide/developing/projects/projects-eclipse.html – adatapost

+0

@AVD我没有试图引用另一个android项目,而只是一个标准的java项目。 – Stratus

+0

可能的重复[Android项目引用“正常”的Java项目在eclipse中自sdk工具更新17以来](http://stackoverflow.com/questions/9889572/android-project-referencing-normal-java-project-in-eclipse- since-sdk-tools-upd) –

回答

9

假设你使用最新的Android SDK & ADT版本,并且要添加一个标准的Java项目在Android项目一个的依赖:

  1. 添加项目B到项目A的构建路径:项目A的构建路径中导出列表Properties -> Java Build Path -> Projects -> Add ...
  2. 蜱项目B:Properties -> Java Build Path -> Order and Export

现在,您应该能够使用Android项目中的标准Java库中的类,并在Eclipse中构建/运行/调试它。

希望这会有所帮助。

UPDATE:以上操作只需要添加一行到.classpath

<classpathentry combineaccessrules="false" exported="true" kind="src" path="/projB"/> 
+0

我忘了打勾项目a的方块。谢谢。 – Stratus

+0

如果我已经完成了这个阶段但是收到同样的错误怎么办? –

+0

永远不会理解“导出”复选框的作用,但是在eclipse地区的某个人有先见之明,并且知道我们需要它用于android应用。 :-)非常感谢,一段时间以来我一直对此感到震惊。 – stu

相关问题