从另一个项目导入类不起作用

时间:2011-10-31 15:43:19

标签: java android

我正在尝试在应用中使用另一个项目的类。在Eclipse中,我在Java Build Path下的项目属性中添加了另一个项目,在Libraries下添加了项目的类文件夹。在Referenced Libraries的Package Explorer中,referencend类在(默认包)下可见。

在编写代码时,我可以毫无问题地使用引用的类,并且编译应用程序不会引发警告或错误,但是当应用程序启动时,logcat会显示以下内容:

dalvikvm(16174): Could not find class 'de.project.myproject1.myclass', referenced from method de.project.myproject2.myActivity.onCreate

AndroidRuntime(15570): FATAL EXCEPTION: main
AndroidRuntime(15570): java.lang.NoClassDefFoundError: de.project.myproject1.myclass
AndroidRuntime(15570):  at de.project.myproject2.myActivity.onCreate(KeyGenActivity.java:45)
AndroidRuntime(15570):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
AndroidRuntime(15570):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
AndroidRuntime(15570):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
AndroidRuntime(15570):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
AndroidRuntime(15570):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
AndroidRuntime(15570):  at android.os.Handler.dispatchMessage(Handler.java:99)
AndroidRuntime(15570):  at android.os.Looper.loop(Looper.java:123)
AndroidRuntime(15570):  at android.app.ActivityThread.main(ActivityThread.java:4627)
AndroidRuntime(15570):  at java.lang.reflect.Method.invokeNative(Native Method)
AndroidRuntime(15570):  at java.lang.reflect.Method.invoke(Method.java:521)
AndroidRuntime(15570):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
AndroidRuntime(15570):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
AndroidRuntime(15570):  at dalvik.system.NativeStart.main(Native Method)
ActivityManager(  971):   Force finishing activity de.project.myproject2/.myActivity
ActivityManager(  971): Activity pause timeout for HistoryRecord{4407ee10 de.project.myproject2/.myActivity}

所以有人提示,如何解决问题,我整整一天都没有解决方案?

2 个答案:

答案 0 :(得分:2)

我建议尝试将Eclipse项目导出为jar,并将jar添加到Android项目的构建路径中。否则,如果您可以控制其他Eclipse项目,那么请尝试创建Android Library project并将代码移动到该项目中。

最后,您应该能够将Eclipse项目中的源添加为Android项目中的路径。这样,Android项目将编译并包含源。

答案 1 :(得分:2)

您不需要在任何地方添加其他项目的类文件夹,这对我来说听起来不对。我猜这就是为你搞砸了......

据我记得(我必须这么做一段时间)从另一个项目中使用该类的最简单方法是: 1.将其他项目添加到构建路径(Java Build Path-> Projects选项卡 - > Add ...) 2.确保将其他项目作为构建过程的一部分导出(Java Build Path-> Order and Export选项卡 - >勾选列表中显示的其他项目。)

另一种方法是将另一个项目作为库引用。可以像Elevine建议的那样,或者只是将另一个项目编译成jar并引用该文件。