在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 感谢
答案 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就可以了。