【问题标题】:Getting java.lang.NoClassDefFoundError when using android-betterpickers library使用 android-betterpickers 库时出现 java.lang.NoClassDefFoundError
【发布时间】:2014-08-10 07:11:55
【问题描述】:

每当我尝试使用利用 android-betterpickers 库的片段时,都会收到以下错误。

我的计划指向 android-betterpickers 作为我项目的库。有人知道这里可能发生了什么吗?

08-10 02:06:39.152: E/AndroidRuntime(2628): java.lang.NoClassDefFoundError: com.mavdev.focusoutfacebook.fragments.addablock.selecttime.Fragment_time_addblock
08-10 02:06:39.152: E/AndroidRuntime(2628):     at com.mavdev.focusoutfacebook.fragments.addablock.Fragment_AddaBlock.displayView(Fragment_AddaBlock.java:224)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at com.mavdev.focusoutfacebook.fragments.addablock.Fragment_AddaBlock.access$0(Fragment_AddaBlock.java:211)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at com.mavdev.focusoutfacebook.fragments.addablock.Fragment_AddaBlock$ListItemClickListener.onItemClick(Fragment_AddaBlock.java:293)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at android.widget.AdapterView.performItemClick(AdapterView.java:298)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at android.widget.AbsListView.performItemClick(AbsListView.java:1100)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2788)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at android.widget.AbsListView$1.run(AbsListView.java:3463)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at android.os.Handler.handleCallback(Handler.java:730)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at android.os.Looper.loop(Looper.java:137)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at android.app.ActivityThread.main(ActivityThread.java:5103)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at java.lang.reflect.Method.invokeNative(Native Method)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at java.lang.reflect.Method.invoke(Method.java:525)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-10 02:06:39.152: E/AndroidRuntime(2628):     at dalvik.system.NativeStart.main(Native Method)

我只是从我的一个 Fragment 中扩展了其中一个 android-betterpickers 类,如下所示,只是没有显示 Fragment 中的 onCreateView 等其他函数:

public class Fragment_time_addblock extends Fragment DatePickerDialogHandler {


@Override
public void onDialogDateSet(int reference, int year, int monthOfYear,
        int dayOfMonth) {
    // TODO Auto-generated method stub

}


}

仅当在手机/模拟器上运行时才会出现此问题,但能够编译项目并成功运行它,只有当我尝试打开此 Fragment 时,应用程序才会崩溃。

我可以尝试什么来解决这个问题?

【问题讨论】:

    标签: android eclipse noclassdeffounderror better-pickers


    【解决方案1】:

    检查您是否在Java Build Path > Order and Export tab 中导出了该库

    【讨论】:

    • 我有,在问题中添加了截图。仅当在手机/模拟器上运行时才会出现此问题,但能够编译项目并成功运行它,只有当我尝试打开此 Fragment 时,应用程序才会崩溃。真的不知道这里发生了什么......
    • 从上面的截图中,我怀疑 .jar 文件不在libs 文件夹中。你需要把你所有的.jars 放在libs 中,否则它不会被打包到 apk 中
    • 我需要为“libraryDateTimePicker”库项目生成 *.jar 文件吗?如何?这是一个带有我正在尝试使用的源代码的外部库项目。
    【解决方案2】:

    讨厌回答我自己的问题,但我会记下我所做的,而不是最优雅的解决方案

    我将库中正确的类和接口复制到我自己的项目中。我认为这个问题与交叉依赖有关,因为我正在使用几个引用其他一些常见库的库。

    将代码引入我自己的项目还可以让我将 apk 的大小保持在合理的范围内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 2012-05-13
      • 1970-01-01
      相关资源
      最近更新 更多