gpt4 book ai didi

java - 添加外部 .java 和 .class 文件后出现 NoClassDefFoundError 异常

转载 作者:行者123 更新时间:2023-12-01 15:35:44 25 4
gpt4 key购买 nike

请原谅我在命名中犯的任何错误,因为我对 Eclipse 和 Java 还比较陌生。

我正在编写一个实现外部 API(Amazon Web Service API)的 Android 应用程序。下载的API文件包括.class文件目录和.java文件目录。

在将这些添加为依赖项时,我做了以下操作:

  1. Eclipse->项目属性->java构建路径->源->链接源->选择包含.java文件的目录。

  2. 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();

最佳答案

首先,您需要链接包文件的根文件夹(例如/classes/,当类文件夹包含例如 com/amazon/some/or/the/other 时。因为类文件包含所有信息,您不需要使用源文件。

但是,您可以(再次)添加包含 Java 文件的包的根目录,这样您就可以在需要时查看源代码。这样做的另一个优点是您可以看到方法参数的名称,因为它们存在于类文件中。展开类文件夹的项目后,通过单击“构建路径”选项卡库中的链接源来执行此操作。

关于java - 添加外部 .java 和 .class 文件后出现 NoClassDefFoundError 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8874349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com