这是我到目前为止所遵循的步骤,但没有运气。我对 Java 项目非常陌生,所以我怀疑我可能遗漏了一些明显的东西。
使用 Eclipse,我创建了一个名为 TestSDK 的简单 Java 项目,在其中创建了一个名为 com.test.testsdk 的包,并在其中创建了以下类:
package com.test.testsdk;
public class TestClass {
public void TestMethod() {
}
}
这编译没有错误或警告。
然后,我使用 Eclipse 和标准导出选项(导出生成的类文件和资源、压缩 JAR 的内容、生成清单文件)将其导出为 JAR 文件 (TestSDK.jar)。我尝试过密封和不密封 JAR,这没有区别。
然后,我从 Wizards 列表中的 File->New->Project 创建一个新的 Android 应用程序项目。这在 Android 模拟器和我的测试设备上编译并运行,没有警告或错误(我收到 hello world 消息)。
然后我添加对我的 TestSDK.jar 文件的引用(使用各种不同的方法,我将在稍后进行扩展),将其导入主(也是唯一的)Android 活动,并尝试实例化我的 TestClass 并在其上调用 TestMethod,像这样:
package com.apptest.mobilesdktestapp;
import android.app.Activity;
import android.os.Bundle;
import com.test.testsdk.TestClass;
public class MobileSDKTestAppActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TestClass test = new TestClass();
test.TestMethod();
}
}
这编译得很好,没有警告或错误。但是,当尝试在模拟器或设备上运行它时,我的 LogCat 窗口中出现以下错误:
AndroidRuntime Uncaught handler: thread main exiting due to uncaught exception
AndroidRuntime java.lang.NoClassDefFoundError: com.test.testsdk.TestClass
在网上搜索NoClassDefFoundError
结果会得到很多关于如何导入 JAR 文件以使类路径正确的建议。因此,我尝试了以下所有导入 JAR 文件的方法:
“添加外部 JAR...”来自项目属性中 Java 构建路径的库选项卡,然后检查(或不检查,我都尝试过)订单和导出选项卡中的 JAR。还尝试将 JAR 移到 Order and Export 列表的顶部,这没有任何区别。
在项目中创建一个“libs”文件夹,并在那里添加 JAR。我确认 JAR 然后也被添加到项目列表中的“Android Dependencies”中。还尝试右键单击 JAR 文件并选择构建路径->添加到构建路径,这没有任何区别。
将 JAR 移动到我的 Android 应用程序项目目录并执行“添加 JAR ...”而不是步骤 1 中的外部 JAR,以及是否导出以及是否将其移动到订单列表顶部的所有排列。
我随后下载了其他 3rd 方 SDK,这些 SDK 打包为 JAR 文件并将它们包含在同一个 Android 应用程序项目中,并且使用上述 3 种方法中的任何一种都可以正常工作(我能够从这些 SDK 实例化类并使用它们没有错误),这使我相信我在我的 TestSDK 项目和/或类中遗漏了某些东西或做错了什么,这阻止了它在 Android 应用程序项目中的使用。
正如我所说,我对 Java 很陌生,所以我希望它是我忽略的一些简单的东西。任何帮助或指导将不胜感激。