请原谅我在命名法上犯的任何错误,因为我对 Eclipse 和 Java 还比较陌生。
我正在编写一个实现外部 API(Amazon Web Service API)的 Android 应用程序。下载的 API 文件包括一个包含 .class 文件的目录和一个包含 .java 文件的目录。
在将这些添加为依赖项时,我做了以下事情:
Eclipse->项目属性->java构建路径->源->链接源->选择包含.java文件的目录。
Eclipse->项目属性->java构建路径->库->添加外部类文件夹->选择包含.class文件的目录。
在此配置下编译时,我收到以下错误:
java.lang.IllegalArgumentException: already added: Lcom/ECS/client/jax/VariationSummary;
Conversion to Dalvik format failed with error 1
对于每个类文件,该错误都会重复一次。
为了解决这个问题,我删除了对外部类文件夹的引用,程序编译并运行。但是,在到达使用API 方法之一的代码段时,我遇到了以下错误:
01-15 15:29:20.756: E/AndroidRuntime(1038): java.lang.NoClassDefFoundError: com.ECS.client.jax.AWSECommerceService
编辑
完整的堆栈跟踪:
01-15 17:12:28.256: W/dalvikvm(1227): Unable to resolve superclass of Lcom/ECS/client/jax/AWSECommerceService; (365)
01-15 17:12:28.296: W/dalvikvm(1227): Link of class 'Lcom/ECS/client/jax/AWSECommerceService;' failed
01-15 17:12:28.296: E/dalvikvm(1227): Could not find class 'com.ECS.client.jax.AWSECommerceService', referenced from method com.giftme.Amazon.searchRequest
01-15 17:12:28.296: W/dalvikvm(1227): VFY: unable to resolve new-instance 66 (Lcom/ECS/client/jax/AWSECommerceService;) in Lcom/giftme/Amazon;
01-15 17:12:28.306: D/dalvikvm(1227): VFY: replacing opcode 0x22 at 0x0000
01-15 17:12:28.306: D/dalvikvm(1227): VFY: dead code 0x0002-0033 in Lcom/giftme/Amazon;.searchRequest (Ljava/lang/String;)Z
01-15 17:12:28.306: W/dalvikvm(1227): threadid=10: thread exiting with uncaught exception (group=0x40015560)
01-15 17:12:28.306: E/AndroidRuntime(1227): FATAL EXCEPTION: Thread-13
01-15 17:12:28.306: E/AndroidRuntime(1227): java.lang.NoClassDefFoundError: com.ECS.client.jax.AWSECommerceService
01-15 17:12:28.306: E/AndroidRuntime(1227): at com.giftme.Amazon.searchRequest(Amazon.java:21)
01-15 17:12:28.306: E/AndroidRuntime(1227): at com.giftme.Friend$InterestsRequestListener$4.parseDataAndSearch(Friend.java:359)
01-15 17:12:28.306: E/AndroidRuntime(1227): at com.giftme.Friend$InterestsRequestListener$4.run(Friend.java:329)
01-15 17:12:28.306: E/AndroidRuntime(1227): at java.lang.Thread.run(Thread.java:1019)
这是它所指的第 21 行:
AWSECommerceService service = new AWSECommerceService();