java.lang.NoClassDefFoundError当eclipse中的crouton库时

时间:2014-01-17 08:36:59

标签: android eclipse crouton

在SO上获得this问题的解决方案之后,我终于找到了我的crouton库。 我被定向到maven central,我在页面底部的列表中下载了crouton-1.8.4,大小为24kb的第三个。然后我将它复制到我的android项目的libs文件夹中,将其添加到构建路径,并在订单和导出面板中进行检查。

这解决了我之前在问过的问题。

我试图运行的代码是Crouton.makeText(this, "BAD Crouton", Style.ALERT); ,只是为了查看它是否有效。我正在4.4.2模拟器上测试它。我还在添加Style.Builder之后在2.2仿真器上尝试了它,它需要在较低的设备上工作。我遇到了同样的问题。

但是当我的快乐是短暂的,因为当我在模拟器上测试它时,这是我在logcat中得到的错误。

 01-17 03:15:44.537: E/AndroidRuntime(2203): FATAL EXCEPTION: main
 01-17 03:15:44.537: E/AndroidRuntime(2203): Process: com.example.dester, PID: 2203
 01-17 03:15:44.537: E/AndroidRuntime(2203): java.lang.NoClassDefFoundError: de.keyboardsurfer.android.widget.crouton.Style
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at com.example.dester.MainActivity.onCreate(MainActivity.java:17)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at android.app.Activity.performCreate(Activity.java:5231)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at android.app.ActivityThread.access$800(ActivityThread.java:135)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at android.os.Handler.dispatchMessage(Handler.java:102)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at android.os.Looper.loop(Looper.java:136)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at android.app.ActivityThread.main(ActivityThread.java:5017)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at java.lang.reflect.Method.invokeNative(Native Method)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at java.lang.reflect.Method.invoke(Method.java:515)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
 01-17 03:15:44.537: E/AndroidRuntime(2203):    at dalvik.system.NativeStart.main(Native Method)

当我第一次得到错误时,我认为它必须是简单的东西,所以我清理并重新重建它仍然得到相同的错误。然后我搜索了java.lang.NoClassDefFoundError上的信息,我发现它与VM有关,而不是找到一个要求加载的类。在这种情况下,它将是Style类。

我已花了将近24小时的时间并尝试了很多解决方案,但都无济于事。

请注意,我的java编译器合规级别是1.6,我使用的是JRE6 感谢

5 个答案:

答案 0 :(得分:2)

如果您不需要Crouton 1.8.2中的任何新功能,请尝试1.8.1(https://github.com/keyboardsurfer/Crouton/wiki/Changelog)。我有完全相同的问题,但是当我使用1.8.1时一切正常。我也一直在努力解决这个问题,还没有找到解决方案。我想知道它是否与它现在使用Java 1.7的事实有关...

答案 1 :(得分:2)

Crouton 1.8.3已经发布并回滚到Java 6源代码兼容性。 使用此版本可以解决问题。

答案 2 :(得分:0)

右键单击您的项目> 选择Build Path> Configure Build Path>转到Order & Export Tab并检查crouton-1.8.2.jar(为crouton添加的jar)最后OK

然后尝试清理项目并再次运行。

答案 3 :(得分:0)

转到Project->Properties->Java Build Path,然后选择Order and export标签。设置android-support-v4.jar库并将其放入列表顶部。然后清理并重建项目。

答案 4 :(得分:0)

这可能是由于您的构建系统与jar文件的创建方式不兼容。 Crouton库只包含一个包,因此很容易在应用程序中添加它并摆脱jar。只需在项目中的this folder下添加代码即可。您只需要最新的SDK就可以了。