使用 ical4j 库解析 Google icals 时出错
Error parsing Google icals using ical4j library
我正在使用的系统一直在使用 ical4j 库将我们用户的 google 日历与我们的内置日历同步一段时间,并且一直运行良好,直到几周前他们的日历停止同步.快速查看日志会发现以下堆栈跟踪:
=75213399 2016-01-15 14:37:33,574 [task-scheduler-5] INFO org.springframework.integration.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX]
=75214067 2016-01-15 14:37:34,242 [calendar-9] INFO com.starfish.batch.integration.GoogleCalendarParser - Using temp dir /var/log/starfish/starfish-batch-stage
=75214070 2016-01-15 14:37:34,245 [calendar-9] ERROR com.starfish.batch.integration.GoogleCalendarParser - Exception getting user google cal for 4829on try number 2 trying again.
net.fortuna.ical4j.data.ParserException: Error at line 841:Invalid parameter name: FILENAME
at net.fortuna.ical4j.data.CalendarParserImpl.parse(CalendarParserImpl.java:148)
at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:211)
at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:192)
at.....
我使用基于相同库的在线验证工具(http://severinghaus.org/projects/icv/)来验证错误。
产生解析异常的 ical 部分是(省略客户端信息):
ATTACH;FILENAME=Reading Day Holiday Lunch 2015.docx:https://drive.google.co
m/a/ZZZZ.edu/file/d/ZZZZZZZZZZZZZZZZZZZZZZZZ/view?usp=drive_web
我们的系统使用的是 ical4j 版本 1.0-rc3-SNAPSHOT。
我研究了 google 是否改变了他们生成 icals 的方式,但没有找到任何东西。我可能在错误的地方搜索。有没有人遇到过这个问题,如果遇到过,是如何解决的?
是否有人知道 google 可能做出的任何更改会导致此异常?
用户的附件位置与它有什么关系吗?
默认情况下,ical4j 严格遵守 RFC5545 中定义的默认注册集 属性。这意味着 RFC5545 中未定义的任何 属性 或参数都应以 X-.
为前缀
您遇到的特定参数 (FILENAME) 已添加为 https://datatracker.ietf.org/doc/html/draft-daboo-caldav-attachments-03#section-4.2 的一部分。
为了克服这个问题,你想设置
ical4j.parsing.relaxed=真
在您的 ical4j.properties 中(它本身应该在您的 ical4j.jar jar 文件的根目录中)或作为系统 属性.
现在,我不能 100% 确定您使用的 ical4j 版本是否包含对此的正确修复,因此您可能还想从 https://github.com/ical4j/ical4j[= 升级到更高版本12=]
我正在使用的系统一直在使用 ical4j 库将我们用户的 google 日历与我们的内置日历同步一段时间,并且一直运行良好,直到几周前他们的日历停止同步.快速查看日志会发现以下堆栈跟踪:
=75213399 2016-01-15 14:37:33,574 [task-scheduler-5] INFO org.springframework.integration.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX]
=75214067 2016-01-15 14:37:34,242 [calendar-9] INFO com.starfish.batch.integration.GoogleCalendarParser - Using temp dir /var/log/starfish/starfish-batch-stage
=75214070 2016-01-15 14:37:34,245 [calendar-9] ERROR com.starfish.batch.integration.GoogleCalendarParser - Exception getting user google cal for 4829on try number 2 trying again.
net.fortuna.ical4j.data.ParserException: Error at line 841:Invalid parameter name: FILENAME
at net.fortuna.ical4j.data.CalendarParserImpl.parse(CalendarParserImpl.java:148)
at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:211)
at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:192)
at.....
我使用基于相同库的在线验证工具(http://severinghaus.org/projects/icv/)来验证错误。
产生解析异常的 ical 部分是(省略客户端信息):
ATTACH;FILENAME=Reading Day Holiday Lunch 2015.docx:https://drive.google.co
m/a/ZZZZ.edu/file/d/ZZZZZZZZZZZZZZZZZZZZZZZZ/view?usp=drive_web
我们的系统使用的是 ical4j 版本 1.0-rc3-SNAPSHOT。
我研究了 google 是否改变了他们生成 icals 的方式,但没有找到任何东西。我可能在错误的地方搜索。有没有人遇到过这个问题,如果遇到过,是如何解决的?
是否有人知道 google 可能做出的任何更改会导致此异常?
用户的附件位置与它有什么关系吗?
默认情况下,ical4j 严格遵守 RFC5545 中定义的默认注册集 属性。这意味着 RFC5545 中未定义的任何 属性 或参数都应以 X-.
为前缀您遇到的特定参数 (FILENAME) 已添加为 https://datatracker.ietf.org/doc/html/draft-daboo-caldav-attachments-03#section-4.2 的一部分。
为了克服这个问题,你想设置
ical4j.parsing.relaxed=真
在您的 ical4j.properties 中(它本身应该在您的 ical4j.jar jar 文件的根目录中)或作为系统 属性.
现在,我不能 100% 确定您使用的 ical4j 版本是否包含对此的正确修复,因此您可能还想从 https://github.com/ical4j/ical4j[= 升级到更高版本12=]