我正在开发的系统已经使用ical4j库将用户的与我们的内置日历同步了一段时间,直到几周前他们的日历停止同步时才恢复正常。快速查看日志就会发现以下堆栈跟踪:
=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-快照.
我研究了谷歌是否改变了他们生产汽车的方式,但却找不到任何东西。我可能找错地方了。是否有人遇到过这个问题,如果是,采取了什么措施来解决这个问题?
有没有人知道谷歌可能做出的任何改变都会导致这一异常?
用户的附件位置和它有什么关系吗?
发布于 2016-01-25 12:56:58
默认情况下,ical4j严格遵守在RFC5545中定义的默认注册属性集。这意味着在RFC5545中没有定义的任何属性或参数都应该以X-作为前缀。
您正在努力处理的特定参数(文件名)是作为https://datatracker.ietf.org/doc/html/draft-daboo-caldav-attachments-03#section-4.2的一部分添加的。
要克服这一问题,您需要设置
ical4j.parsing.relaxed=true
无论是在您的ical4j.properties中(它本身应该位于ical4j.jar jar文件的根目录)还是作为一个系统属性。
现在,我还不能100%确定您正在使用的ical4j版本是否包含正确的修补程序,因此您可能还想从https://github.com/ical4j/ical4j升级到更高的版本
https://stackoverflow.com/questions/34955725
复制相似问题