NoClassDefFoundError-Eclipse 和 Android

我在尝试运行一个 Android 应用程序时遇到了一个问题,在添加第二个外部库到其构建路径之前,这个应用程序一直运行良好。由于添加了 scoreninja jar,我现在在尝试运行应用程序时得到了一个 NoClassDefFoundError

这就是信息:

02-11 21:45:26.154: ERROR/AndroidRuntime(3654): java.lang.NoClassDefFoundError: com.scoreninja.adapter.ScoreNinjaAdapter

因为所有的构建脚本都是由 Android 工具生成的(?),我不知道还能做什么,除了清洁和重建或重新启动日食(我已经尝试了所有三个)。有人知道我该怎么补救吗?

115736 次浏览

通过将外部 jar 添加到构建路径中,只是将 jar 添加到包中,但是它在运行时不可用。

为了使这个罐子能够在 运行时间上使用,你需要:

  • 把罐子放在你的 assets文件夹下
  • 在构建路径中包含 jar 的这个副本
  • 转到同一个弹出窗口的导出选项卡
  • 将该框与新添加的罐子对照

我不确定这是否相关,或者你是否还在寻找答案,但我在试图研究同一个错误时偶然发现了这个线索(但可能是出于不同的原因)。

我在网上找不到任何解决方案,但是一个类似的主题让我思考并意识到我可能只是需要重建(或清理)这个项目。

在 Eclipse 中,转到 Project = > Clean。选择您的项目,Eclipse 似乎可以自己修复它。对我来说,这解决了问题。

希望这个能帮上忙。

我为 MapActivity.Builds 在 Eclipse 中在调试器中得到 NoClassDeffound 设置了这个。

忘记在 <Application>...</Application>元素内部向清单添加库

<uses-library android:name="com.google.android.maps" />

我已经更改了所包含项目的顺序(Eclipse/Configure Build Path/Order and Export)。我已经将我的两个依赖项目移到了“订单和导出”列表的顶部。解决了“ NoClassDefFoundError”问题。

对我来说很奇怪。我没有听说过包含库和项目顺序的重要性。Android + Eclipse 很有趣:)

我尝试了各种方法,在我的案例中出错的原因是在 Java 构建路径-> 库中 maps.jar 和 Google Api 之间的冲突。所以,当我移除 Maps.jar 的时候,它工作得很好。

问候,

瓦希布

我有这个问题后,更新 ADT。

我将所有 JAR 文件存储在一个名为“ lib”的文件夹中,并以正常的 Eclipse 方式将 JAR 添加到构建路径中。在我更新之前一切正常。

在更新之后,我得到了一个类的 NoClassDefFoundError,我可以清楚地看到它包含在 jar 中(查看 ReferencedLibrary 类)。

解决方案是从构建路径中删除 jar,并将我的“ lib”文件夹重命名为“ libs”。这是一个蚂蚁约定,似乎是新的 ADT 在。Apk 文件。一旦我这么做了,一切都很顺利。

我不需要将 jar-library 放在 asset 或 lib (s)中,只需在 Properties-> Java Build Path-> “ Order and Export”(之前列出了它,但没有选中)中的 jar 框中打勾即可

对我来说,同样的事情也起作用了: Properties-> Java Build Path-> “ Order and Export” 有趣的是——为什么这不是自动完成的? 我猜测一些设置丢失了。这也发生在我的 SDK 升级之后

右键单击您的项目文件夹,在 Java 构建路径中查找 Properties,并选择您看到的 jar 文件。这招对我很管用。

我也遇到过同样的问题。原因是我尝试使用的库是用标准的 JDK7编译的。

我用 -source 1.6 -target 1.6选项重新编译了它,它工作得很好。

约翰 · 奥康纳在这个问题上是对的。问题出在安装 ADT17及以上版本上。找到了这个修复错误的链接:

http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

请确保您的 jar 文件在您的项目的 libs 目录中,因为您正在使用更新的 ADT 版本和 Eclipse。

我得到了完全相同的问题... 为了解决它,我只是删除了我的 Android 私人库在“构建路径”,点击确定... 当我打开“构建路径”再次日蚀添加了它们本身,然后它为我工作;)。

有时候你不得不把整个外部项目当作库,而不仅仅是 jar:

我的问题通过添加整个项目(在我的例子中是 google-play-services _ lib)作为库而不仅仅是 jar 来解决。步骤(从 @ 风格回答开始) :

  1. 档案-> 新建-> 其他
  2. 选择 Android 项目
  3. 选择“从现有源创建项目”
  4. 点击“浏览...”按钮并导航到 通缉项目
  5. Finish (现在工作区中的操作栏项目)
  6. 右键单击您的项目-> 属性
  7. 在 Android-> Library 部分单击 Add
  8. 选择最近添加的项目-> OK

在更新 ADT 之后,我花了两天时间试图解决这个问题。最后,我很幸运地在这里得到了这个帖子:

https://code.google.com/p/android/issues/detail?id=55304

让我找到了正确的方向。当您遵循这个解决方案时——记住将所有项目的 android 支持库替换为相同的版本(删除它并将其重新安装到项目中)。我希望这能帮上忙,祝你好运

如果您想知道解决方案与哪些文件相关,以下是我发现的内容。简单的改变。类路径文件

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

替换。所有库项目和主 android 项目中的类路径文件。那个。Classspath 文件位于 Eclipse 项目的根文件夹中。当然不要忘记添加您自己的类路径条目,如果您有任何类路径条目的话(所以与当前版本的。类路径)。

我相信这和上面解释的组件用户浏览 Eclipse 菜单的结果是一样的(Eclipse/Configure Build Path/Order and Export)。

给你的解决方案对我很有效。这是一个将库导入到 libs 文件夹,然后修改 build.gradle 文件,然后使用 gradlew 进行清理的问题。

我尝试了从这个帖子(和其他一些帖子)的一切,它不适合我,这是迄今为止最糟糕的 ADT 升级我所经历的,我永远不会升级没有一个工作的 ADT 备份。

我设法通过删除项目来解决这个问题,然后使用我拥有的源代码备份再次添加它。

我在 ADT22上也有同样的错误。解决了在属性-> Java 构建路径-> 订单和导出中检查“ Android 私有库”的问题。如果您正在使用任何库项目,也应该对它们执行相同的操作。

如果在项目生成路径中更改顺序并导出,则不会发生此错误。 另一种实现方法是通过项目文件夹中的. classspath

试试这个:-

第一步

在 Eclipse 中添加所有要构建的库(意味着创建所有被引用的库)

第二步

删除 R.java 文件并重新构建项目。别担心,R.java 会自动重新创建。

冷静:)

据我所知,您的 Project 没有显示错误,因为您包含了 Jar。但是当您的项目被“导出”到设备时,Jar 将不会被使用。 试试这个

工程项目-> 物业

Java 构建路径/订单和导出

[ something ]你的罐子

这种事经常发生在我身上。

我记得上一次发生这种情况是由于将 Eclipse ADT (Google 特别版)切换到 Android Studio,然后再切换回来。我基本上尝试了所有的方法,我可以找到堆栈溢出,这不适合我。

最终,我通过使用 ADT 将 IDE 切换到原来的 Eclipse (Kepler) ,使应用程序重新工作(不再出现 NoCalssDeffoundError)。

所有现有的答案对我来说都不起作用,因为我的情况有点不同。我花了几个小时才修好。我在用 Eclipse。

我的 android 项目包括另一个普通的 java 1.6项目,它需要一个第三方 jar 文件。诀窍是:

  • 将 jar 包含在普通的 Java 项目中,以便(仅)进行编译,不要在“ Order and Export”选项卡中检查它
  • 还要将这个 jar 文件复制到 android 项目的“ libs”文件夹中,这样它在运行时就可以使用了

希望这对那些有类似情况的人有所帮助。

有时候,这是因为在 AndroidManifest.xml 中没有包含 jar (您对它有依赖性)和“ use-library”标记。

此外,确保它应该在“应用程序”标签内。

问候,

拉维

我有这个问题,它是由于没有“导出”图书馆。问题只是因为。在打包 APK 时,某些类的类文件不可用。编译时间不用导出也可以正常工作

在我的例子中,我使用的是“ CusrsorAdapter”类,在“ JavaBuildPath-> Order and Export”下我没有检查支持 V4 jar。一旦被选中,问题就消失了。

为了确保由于上述原因您正在获得 noClassDeffound 错误,请检查您的 logacat,您将在运行时看到未知的超类错误。

实际上,您已经达到了臭名昭著的64k 限制问题,您需要启用 multidex。

这就是你要做的。 https://developer.android.com/tools/building/multidex.html