【问题标题】:NoClassDefFoundError when adding SocialAuth in Eclipse在 Eclipse 中添加 SocialAuth 时出现 NoClassDefFoundError
【发布时间】:2012-09-06 08:15:06
【问题描述】:

我尝试向我的 Android 项目添加一个外部库,但没有成功。我的应用程序在运行时因异常而崩溃:

09-06 07:44:41.921: E/AndroidRuntime(601): java.lang.NoClassDefFoundError: org.brickred.socialauth.android.SocialAuthAdapter

找到了许多不同的魔法解决方案,但没有任何帮助:

  1. 创建目录“libs”并在其中添加 JAR。
  2. 还在“项目属性 → Java 构建路径 → 库”中添加了 JAR
  3. 在“项目属性 → Java 构建路径 → 排序和导出”中将 JAR 移到顶部并检查它
  4. 尝试清理项目,甚至创建新项目。
  5. 已安装最新版本的 Eclipse。

我看到添加库时 APK 的大小发生了变化。

有什么想法吗?

使用的软件:

  • Eclipse:版本:Juno Release Build id:20120614-1722
  • ADT:20.0.3.v201208082019-427395

【问题讨论】:

    标签: java android eclipse adt socialauth


    【解决方案1】:

    我遇到了同样的问题,这里的现有答案都没有解决问题。

    然后我检查了 SocialAuth 示例(有效),并注意到 jar 名称与我的不同 - socialauth-android.jar 而不是 socialauth-android-1.0.jar

    我使用了 socialauth-android.jar jar,运行时错误消失了。

    【讨论】:

      【解决方案2】:

      您只需要在 AndroidManifest.xml 文件中定义一个新的活动。

      将以下代码放入清单文件的<application> ----</application> 标记内。

      <uses-library android:name="org.brickred.socialauth.android.SocialAuthAdapter" />
      

      【讨论】:

        【解决方案3】:

        有时,更新 ADT 会导致错误。尝试将其放在 &lt;Application&gt; 文件中的 &lt;Application&gt; 标记中

        <uses-library android:name="org.brickred.socialauth...(your lib name)" />
        

        如果在您的 prj 属性中检查了 Ref Lib,请查看更多信息:Manage project libs

        【讨论】:

        • 我试了一下,得到了新的错误:Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY 在 logcat 中:09-07 09:02:28.558: E/PackageManager(369): Package my.test.application requires unavailable shared library org.brickred.socialauth.android.SocialAuthAdapter; failing! JAR 仍然在库中并导入到“Java 构建路径”中。
        • 我认为您的库没有名称:org.brickred.socialauth.android.SocialAuthAdapter,请重新检查。可能是:org.brickred.socialauth(不确定)
        • 我在项目资源管理器中展开了 socialauth-android-1.0.jar,右键单击其中的库名称并在上下文菜单中选择“复制限定名称”。也就是说,没有错误,我将复制的名称粘贴到清单文件中。这是行:&lt;uses-library android:name="org.brickred.socialauth.android" android:required="true"/&gt;。但仍然没有成功。
        【解决方案4】:

        java.lang.NoClassDefFoundError 是运行时错误。这意味着在项目中放置 jar 的位置和方式很重要(此处缺少 jar 会导致编译时错误)。重要的是确保您所需的 jar 包含在构建的结果 jar 中。尝试打开您编译/生成的 jar 文件并检查它是否包含所需的 jar 以及它们是否在正确的位置。

        【讨论】:

        • 我是 Android 开发新手,对构建过程的内部知识一无所知。作为构建结果,我有 *.APK 文件,实际上是 zip 存档。里面只有一个有趣的文件:classes.dex。当我向我的项目添加一个外部库时,这个文件会变大 2 倍。所以我认为库实际上是添加到安装包中的。如何查看?
        • 生成的jar文件只是一个不同扩展名的压缩文件。您可以使用 zip 或 rar 实用程序打开它以查看内部结构。
        • 它看起来像别的东西:$ file ./classes.dex classes.dex: Dalvik dex file version 035
        【解决方案5】:

        将jar文件粘贴到libs文件夹中去 *-> properties-> java build path->libraries-> 按 Add jars ->*选择您的应用程序库文件夹 并选择 jar 文件并按 ok 并清除您的项目。

        【讨论】:

        • 我已经尝试过了,请阅读问题中的 [1,2,3,4] 部分。
        【解决方案6】:

        您只需在构建路径中添加 sdk 中提供的 jars。您是否尝试过 sdk.js 中的其他示例。如果您仍然遇到问题,您可以发送邮件到 socialauth android 的支持。

        【讨论】:

          【解决方案7】:

          一旦您的 libs 文件夹中有 socialauth-*.jar 和 socialauth-android.jar,请尝试右键单击它并选择构建路径 > 添加到构建路径。就我而言,当我在项目中获得“Referenced Libraries”时,问题就消失了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-04-18
            • 1970-01-01
            • 2012-05-01
            • 2023-04-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-10-17
            相关资源
            最近更新 更多