NoClassDefFoundError - Eclipse和Android

Tom*_*m R 194 java eclipse ant android build

我在尝试运行Android应用程序时遇到问题,直到在其构建路径中添加第二个外部库,才能正常运行.由于添加了scoreninja jar,我现在在尝试运行应用程序时得到NoClassDefFoundError.

这是消息:

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

由于所有构建脚本都是由Android工具(?)生成的,我不确定除了清理和重建或重启eclipse之外我还能做些什么(我已经尝试了所有这三个).有谁知道我怎么能修改这个?

Joh*_*nor 234

更新ADT后我遇到了这个问题.

我将所有JAR文件存储在名为"lib"的文件夹中,并将jar文件添加到正常Eclipse方式的构建路径中.这工作正常,直到我的更新.

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

解决方案是从构建路径中删除我的jar并将我的"lib"文件夹重命名为"libs".这是一个ant约定,似乎是新ADT在.apk文件中找到并包含库的方式.一旦我这样做,一切都很好.

  • 我在更新ADT后遇到了同样的问题,但我将我的jar放在项目之外的目录中,并将它们作为我的构建路径中的用户库包含在内.解决方案是从我的构建路径中删除用户库,而是使用"添加外部JAR"包含jar,然后通过选中"Order and Export"选项卡上的复选框来导出它们. (5认同)

Til*_*ill 100

我没有把jar文件库放在资产或lib中,但只在"属性" - >"Java构建路径" - >"订单和导出"中勾选此jar的框(之前已列出,但未选中) )

  • 有谁知道为什么你要两个都做,添加库,并选择订单和导出中的复选框?我有没有理由想要添加外部JAR但不在订单和导出中包含它? (5认同)
  • 它帮助了我,但只有在我做了Project - > Clean之后 (5认同)

Ant*_*ney 68

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

为了使jar在运行时可用,您需要:

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


bri*_*ear 48

我有这个用于MapActivity.Eclipse中的构建在调试器中获得NoClassDefFound.

忘了将库添加到清单,内部<Application>...</Application>元素

<uses-library android:name="com.google.android.maps" />
Run Code Online (Sandbox Code Playgroud)


And*_*sky 27

我已经改变了包含项目的顺序(Eclipse /配置构建路径/订单和导出).我已将我的两个依赖项目移到"订单和导出"列表的顶部.它解决了问题"NoClassDefFoundError".

这对我来说很奇怪.我没有听说包含的图书馆和项目的顺序的重要性.Android + Eclipse很有趣:)


Bri*_*ian 15

我不知道这是相关的,或者如果你甚至还在寻找一个答案,但我碰到这个线程就试图研究相同的错误(但可能出于不同的原因).

我在网上找不到任何解决方案,但在类似线程上的答案让我思考并意识到我可能只需要重建(或清理)项目.

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

希望这可以帮助.


ass*_*ias 13

我遇到了同样的问题.原因是我尝试使用的库已经使用标准JDK 7编译.

我用-source 1.6 -target 1.6选项重新编译它,它工作正常.


vla*_*lad 7

同样的事情对我有用:属性 - > Java构建路径 - >"订单和导出"有趣的是 - 为什么这不是自动完成的?我想有些设置缺失了.SDK升级后也发生了这种情况.