【问题标题】:NoClassDefFoundError , what is overlooked here? (image attached)NoClassDefFoundError ,这里忽略了什么? (附图片)
【发布时间】:2023-03-11 23:02:01
【问题描述】:

症状:我正在使用从创建者的 git 存储库中提取的项目。我包含了他们的库,如 libs 文件夹中所示。项目没有错误,项目编译。然而,当它访问一个应该在 jar 中的对象时,它会崩溃。

我已经做了一些其他的建议,我在这里读到过。我读过一些关于更改 classpath 的内容,那在哪里?

此外,jar 的 src 代码显示有问题的对象实际存在....

ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

05-30 11:26:16.878: E/AndroidRuntime(11098): FATAL EXCEPTION: main
05-30 11:26:16.878: E/AndroidRuntime(11098): java.lang.NoClassDefFoundError:      twitter4j.conf.ConfigurationBuilder
05-30 11:26:16.878: E/AndroidRuntime(11098):    at com.pigmal.android.ex.twitter4j.TwitterApp.askOAuth(TwitterApp.java:110)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at com.pigmal.android.ex.twitter4j.TwitterApp.onClick(TwitterApp.java:144)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at android.view.View.performClick(View.java:2482)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at android.view.View$PerformClick.run(View.java:9077)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at android.os.Handler.handleCallback(Handler.java:587)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at a ndroid.os.Handler.dispatchMessage(Handler.java:92)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at android.os.Looper.loop(Looper.java:130)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at android.app.ActivityThread.main(ActivityThread.java:3683)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at java.lang.reflect.Method.invokeNative(Native Method)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at java.lang.reflect.Method.invoke(Method.java:507)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at dalvik.system.NativeStart.main(Native Method)

这是我完整的项目设置。这是使用 Android 的事实可能与此处无关,我不想通过标记 Android 来疏远 Java 专家

【问题讨论】:

  • 1) 说“Android”不会疏远“Java 专家”;) 2) IDE 的“Java 构建路径”编译时和运行时”类路径”。问:究竟什么是“有问题的对象”?问:能否请您发布确切的错误
  • @paulsm4 我通常不会用 Java 标记 android 帖子,所以一些只有 java 的人可能看不到与 android 相关的问题。我更新了确切的错误
  • 您是如何运行应用程序的(命令行、eclipse 等)?有没有传入的参数?
  • 不缺少参数,项目被编译和打包,并在安卓设备上运行。我认为它与引用文件的方式更相关?但是项目没有错误
  • 不确定这是否是问题所在——您是否已将 libs 文件夹中的 jars 添加为您的 android 项目的“属性”中的外部库?

标签: java android adt noclassdeffounderror


【解决方案1】:

这解决了我http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

What I did to fix the bug was :

Remove the libraries from the standard Java build path :
Right click on the project name > Properties > Java Build Path > tab Libraries > remove      everything except the “Android X.X” (2.3.3 in my case) and the “Android Dependencies”
Rename the libraries folder from “lib” to “libs”
By doing that, all the libraries in the folder “libs” are found by the Android plugin and   are added to the “Android Dependencies” item of the project
Restart Eclipse
Android Dependencies should be created. Running the app won't produce NoClassDefFoundError anymore

除了我必须在遵循这些说明后重新启动 ECLIPSE,而不仅仅是事后清理项目。

【讨论】:

    【解决方案2】:

    试试这个,这对我有用。

    1. 转到构建路径,删除 twitter4j 库,然后执行。

    2. 进入 Build Path,选择 Add External Libraries,然后进入你从 github 下载的项目文件夹,然后进入它的 lib 文件夹,你会在那里找到 twitter4j 文件,选择 twitter4j-仅核心(但仅且仅当它仍然失败时也包括 twitter4j-stream,在此之前仅保留核心)并执行。

    【讨论】:

    • 好建议! CQM - Eclipse“构建路径”== Java“类路径”。不幸的是,涉及到两种不同的构建路径/类路径:1) 编译时和 2) 运行时。您的问题是运行时类路径没有选择具有类“twitter4j.conf.ConfigurationBuilder”的 .jar。您必须将 .jars 添加为“外部库”。
    • 这似乎让我回到了原点。没有错误,它会编译,但在运行应用程序时,它会在访问方法时崩溃并出现NoClassDefFoundError。你用的是哪个项目,twitter4j-core 是你唯一需要的?
    【解决方案3】:

    我遇到了同样的问题,从构建路径中删除所有 twitter 库并将 lib 文件夹重命名为 libs 解决了我的问题

    【讨论】:

      【解决方案4】:

      我认为你最好也为这个问题标记 android。即使因为 ADT 版本,我也看到早期帖子中的人也有类似的问题。理想情况下,由于您已将代码放在 libs 文件夹中,因此您应该能够获取所有这些类。但这似乎是一些运行时问题,而不是编译时间。

      这似乎是特定于 android 的。


      您是否在类路径中手动添加了 jar? 通常,当在libs 文件夹中添加 jar 时,它会开始出现在 Android Dependencies 中,而不是直接在快照中显示。

      【讨论】:

        【解决方案5】:

        对我来说重命名文件夹,重新启动并没有解决问题。但是,在a pages with links posted in a previous comment 内部,有一个解决我问题的答案。 这个回复说:

        If you have references to jars that are not in the ‘libs’ folder, for example if you use ‘classpath variable’, you can resolve the NoClassDefFoundError issue with the new ADT 17 by exporting the references. To export the references: simply go to “Properties > Java Build Path > Order and Export”, and check all the references you want exported.

        我必须将 twitter jar 移到 src 文件夹之前

        【讨论】:

          猜你喜欢
          • 2010-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-15
          • 2022-12-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多