Проблема с преобразованием строки в объект DateDime Joda. Я не могу понять, что я делаю неправильно. Я следую инструкциям по другим темам здесь, в StackOverflow, но следующий код не работает. Это исключает это исключение:Проблема с преобразованием строки в объект DateDime Joda
Exception in thread "main" java.lang.NullPointerException
at org.joda.time.format.DateTimeFormatterBuilder$NumberFormatter.parseInto(DateTimeFormatterBuilder.java:1330)
at org.joda.time.format.DateTimeFormatterBuilder$Composite.parseInto(DateTimeFormatterBuilder.java:2741)
at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:853)
at co.restclient.ExpiringCookie.<init>(ExpiringCookie.java:41)
at co.restclient.ExpiringCookie.main(ExpiringCookie.java:29)
И вот код.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import org.joda.time.DateTime;
import org.joda.time.Duration;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
/*
* This class stores a cookie value and can tell when its expired by its timestamp
*/
public class ExpiringCookie {
public static DateTimeFormatter fmt = DateTimeFormat.forPattern("dd/MM/YYYY HH:mm:ss");
public static File cookieJar = new File("cookie.xml");
public String singleCookie;
DateTime startTime;
DateTime currentTime;
boolean isExpired = false;
public static void main(String[] args) {
ExpiringCookie ec = new ExpiringCookie("xxxxxxx");
System.out.println("Age of cookie: " + ec.timePassed().getMillis());
}
public ExpiringCookie(String cookie) {
currentTime = new DateTime();
Properties properties = new Properties();
if (cookieJar.exists()) {
try {
properties.load(new FileInputStream(cookieJar));
new DateTime();
//startTime = DateTime.parse(properties.getProperty("startTime"), DateTimeFormat.forPattern("dd/MM/YYYY HH:mm:ss"));
startTime = fmt.parseDateTime(properties.getProperty("startTime"));
singleCookie = properties.getProperty("cookie");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
properties.setProperty("startTime", fmt.print(currentTime));
properties.setProperty("cookie", cookie);
startTime = new DateTime(currentTime.plusSeconds(-1));
try {
properties.storeToXML(new FileOutputStream(cookieJar), "Stores cookie for API requests");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public Duration timePassed() {
return new Duration(startTime, currentTime);
}
public boolean isExpired() {
return isExpired;
}
}
cookie.xml содержимое файла заключается в следующем:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Stores cookie for API requests</comment>
<entry key="cookie">xxxxxxx</entry>
<entry key="startTime">03/01/2014 10:00:08</entry>
</properties>
, что является результатом properties.getProperty («STARTTIME») и какую версию времени Joda вы используете? – pogopaule
FYI, проект [Joda-Time] (http://www.joda.org/joda-time/) теперь находится в [режиме обслуживания] (https://en.wikipedia.org/wiki/Maintenance_mode), с команда, предлагающая перейти на классы [java.time] (http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html). См. [Учебное пособие по Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –