我正在使用iCal4j库来生成iCalendar提要。
如果没有将任何事件添加到日历(仅仅是因为碰巧没有任何即将发生的事件要添加),iCal4j 会在将 iCalendar 数据写入输出流时引发验证异常:
net.fortuna.ical4j.model.ValidationException: Calendar must contain at least one component
at net.fortuna.ical4j.model.Calendar.validate(Calendar.java:287)
at net.fortuna.ical4j.model.Calendar.validate(Calendar.java:257)
at net.fortuna.ical4j.data.CalendarOutputter.output(CalendarOutputter.java:96)
at net.fortuna.ical4j.data.CalendarOutputter.output(CalendarOutputter.java:83)
那么,根据iCalendar标准,没有事件的日历实际上是无效的,还是只是iCal4j的验证过于严格?(如果后者适用,有没有办法放松验证?
从技术上讲,iCalendar 至少需要一个组件,如第 3.6 节所述:
https://www.rfc-editor.org/rfc/rfc5545#section-3.6
icalbody = calprops component
[snip..]
component = 1*(eventc / todoc / journalc / freebusyc /
timezonec / iana-comp / x-comp)
您可以使用非验证日历输出器来避免此异常,但目前无法在 iCal4j 中选择性地禁用空日历验证。