从一个android项目引用到另一个Eclipse

时间:2012-05-24 16:12:09

标签: android eclipse configuration project

我已经尝试了2个小时了,我似乎无法让它工作。我想在另一个项目中为我的应用程序构建一个框架。首先,我只是想从另一个项目中找到一个班级。代码编译但在运行时失败,在我从框架中实例化一个类的对象。

05-24 18:04:01.645: E/dalvikvm(16927): Could not find class 'frame.test.Hello', referenced from method moduleLogin.activity.Login.loginClick
05-24 18:04:01.645: W/dalvikvm(16927): VFY: unable to resolve new-instance 190 (Lframe/test/Hello;) in LmoduleLogin/activity/Login;
05-24 18:04:02.715: W/dalvikvm(16927): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at android.view.View$1.onClick(View.java:2154)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at android.view.View.performClick(View.java:2538)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at android.view.View$PerformClick.run(View.java:9152)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at android.os.Handler.handleCallback(Handler.java:587)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at android.os.Looper.loop(Looper.java:130)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at android.app.ActivityThread.main(ActivityThread.java:3691)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at java.lang.reflect.Method.invokeNative(Native Method)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at java.lang.reflect.Method.invoke(Method.java:507)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at dalvik.system.NativeStart.main(Native Method)
05-24 18:04:02.720: E/AndroidRuntime(16927): Caused by: java.lang.reflect.InvocationTargetException
05-24 18:04:02.720: E/AndroidRuntime(16927):    at java.lang.reflect.Method.invokeNative(Native Method)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at java.lang.reflect.Method.invoke(Method.java:507)
05-24 18:04:02.720: E/AndroidRuntime(16927):    at android.view.View$1.onClick(View.java:2149)
05-24 18:04:02.720: E/AndroidRuntime(16927):    ... 11 more
05-24 18:04:02.720: E/AndroidRuntime(16927): Caused by: java.lang.NoClassDefFoundError: frame.test.Hello
05-24 18:04:02.720: E/AndroidRuntime(16927):    at moduleLogin.activity.Login.loginClick(Login.java:49)
05-24 18:04:02.720: E/AndroidRuntime(16927):    ... 14 more

我知道这个话题有很多,但我已经搜索了几个小时,没有任何帖子解决这个问题。大多数主题是如何引用另一个项目。但是因为我的代码正在编译,所以应该引用它?

两个项目都需要是Android项目吗?框架项目应该是一个图书馆吗?谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

如果库项目是一个android项目,你需要从project properties中选择它,然后通过same place引用它,但是在使用它的项目上引用它。 不要忘记使用库项目时有一些规则。有关详细信息,请参阅我的帖子here

如果库项目是java,那就像使用其他java项目一样。

答案 1 :(得分:1)

这是一个很长的镜头,但它对我有用(在阅读了你所做的所有相同的帖子之后花了几个小时......)

如果您确信已正确配置项目引用,则可能是静默构建失败的结果。

在我的情况下,问题是由于我的两个项目的构建环境之间不兼容而引起的。在项目“A”中,它是纯Java,在项目A的构建环境中编译后面的行没有错误:

if ((int) d.get("good")) == 0) {....

事实证明,这在(Android)项目“B”中是不合法的,它需要一个对象:

if ((Integer) d.get("good")) == 0) {....

然而,我得到错误的唯一迹象与您所经历的相同,即“VFY:无法解决......”错误。

我以痛苦的方式找到了错误:通过将项目“A”中的代码复制到项目“B”中,找到错误并将其修复为项目“A”。可能有一种比我更聪明的方法来找到这种不兼容性,例如通过调整两个项目中的设置来完全匹配。