我正在尝试将ics日历中的银行假期添加到Date对象的ArrayList中:
public void loadHolidays()
{
try {
URL holidays = new URL("https://www.gov.uk/bank-holidays/england-and-wales.ics");
InputStream fin = holidays.openStream();
CalendarBuilder builder = new CalendarBuilder();
Calendar calendar = builder.build(fin);
for (Iterator<?> i = calendar.getComponents().iterator(); i.hasNext();) {
Component component = (Component) i.next();
SimpleDateFormat fm = new SimpleDateFormat("yyyyMMdd");
publicHolidays.add(fm.parse(component.getProperty("DTSTART").getValue()));
}
System.out.println("\t\tSuccess.");
} catch (IOException e) {
System.out.println("\t\tFailed. www.gov.uk/bank-holidays/england-and-wales.ics does not exist.");
} catch (ParserException | ParseException e) {
System.out.println("\t\tFailed. Format changed in iCalendar");
}
}
但是,我总是得到:
线程“主”中的异常java.lang.NoClassDefFoundError:net / fortuna / ical4j / data / ParserException
在framework.GPSIS.main(GPSIS.java:29)
引起原因:java.lang.ClassNotFoundException:net.fortuna.ical4j.data.ParserException
我在文件的开头有导入:
import net.fortuna.ical4j.data.CalendarBuilder;
import net.fortuna.ical4j.data.ParserException;
import net.fortuna.ical4j.model.Calendar;
import net.fortuna.ical4j.model.Component;
我的.classpath包含:
<classpathentry exported="true" kind="lib" path="library/ical4j-1.0.5.jar"/>
我是Eclipse的新手,我试图弄清楚我在这里缺少什么。
最佳答案
ParserException
的catch块实际上是格式错误的。管道|
通常用于在同一块中捕获多个不同的异常(因为您将以相同的方式处理它们),而不是两次相同的异常:
catch(ParserException | ParserException e)
这里发生的是,java运行时将第一个ParserException与ical4j的导入进行匹配,然后查找另一个ParserException以与第二个ParserException匹配,但未找到任何ParserException。