android中joda-time的java.lang.NoClassDefFoundError

时间:2016-07-07 14:09:28

标签: android jodatime

我遇到joda-time及其与我的Android应用程序集成的问题。

我想反序列化包含DateTime对象的JSON,该对象用字符串表示:

{
     "userId": 333,
     "username": "myuserid",
     "timestamp": "2014-11-19T17:02:11.454Z"
}

但不幸的是,我收到了NoClassDefFoundError

java.lang.NoClassDefFoundError: org/joda/convert/ToString...     
Caused by: java.lang.ClassNotFoundException: org.joda.convert.ToSt

我尝试添加joda-converter并使用与服务器相同的版本添加joda-time依赖项。但尽管如此,我经常收到例外。我目前的joda-time家属是:

compile 'org.joda:joda-convert:1.8.1'
compile 'joda-time:joda-time:2.1'

我也尝试过用户joda-time-android,但也没有成功。

1 个答案:

答案 0 :(得分:0)

查看我发现的org.joda.convertorg.joda.convert.ToString是一个界面。你不能用它来转换 假设您成功解析了JSON String并且您的对象的定义是:

public class json {
    private Long userId;
    private String username;
    private String timestamp;
}

这就是你想做什么的问题,因为你没有准确的准确 如果您想从joda-time库转换String timespampDateTime对象,请按this link。它提供了解析它的解决方案,因为您提供的日期是描述格式的标准ISO-8601日期。

但是,导入整个库只是为了解析StringDate是一种效率低下的解决方案。 joda-time的初始化速度缓慢,而且性能在Android上很重要。按照this link将字符串转换为Java的{​​{1}}对象,而不导入具有4755种方法的库。