1

我已经尝试了 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 项目吗?框架项目应该是一个库吗?谢谢你的帮助!

4

2 回答 2

2

如果库项目是一个 android 项目,您需要通过从项目属性中选择它来使其成为一个库,然后通过同一位置但在使用它的项目上引用它。不要忘记使用库项目时有一些规则。有关更多信息,请参阅我的帖子

如果库项目是 java ,它与使用其他 java 项目完全一样。

于 2012-05-24T16:32:26.867 回答
2

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

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

就我而言,问题是由于我的两个项目的构建环境之间的不兼容而出现的。在纯 Java 项目“A”中,以下行在项目 A 的构建环境中编译时没有错误:

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

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

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

但是,我得到错误的唯一迹象与您遇到的相同,即“VFY:无法解决...”错误。

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

于 2012-05-24T16:57:52.910 回答