ical4j 2.2.0使用Grape,在加载日历时抛出java.lang.NoClassDefFoundError:javax / cache / configuration / Configuration

时间:2018-06-07 04:56:32

标签: groovy ical4j

以前我能够运行这个从url.ics

读取事件的脚本
import net.fortuna.ical4j.util.Calendars
import net.fortuna.ical4j.model.component.VEvent

@Grapes(
@Grab(group='org.mnode.ical4j', module='ical4j', version='2.2.0')
)
def url = 'https://calendar.google.com/calendar/ical/xxxx/basic.ics'.toURL()
def cal = Calendars.load(url)

但是,现在我收到此异常java.lang.NoClassDefFoundError: javax/cache/configuration/Configuration

我假设发生了某种依赖性更改。我注意到了这个

  

javax.cache.cache-api [optional *] - 支持缓存timzeone定义。 *注意:如果不包括在内,则必须为net.fortuna.ical4j.timezone.cache.impl配置设置一个值

然而,现在我得到了这个java.lang.NoClassDefFoundError: Could not initialize class net.fortuna.ical4j.validate.AbstractCalendarValidatorFactory

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

ical4j查找名为ical4j.properties的属性文件并从中加载配置。在同一文件夹中创建此文件并添加

net.fortuna.ical4j.timezone.cache.impl=net.fortuna.ical4j.util.MapTimeZoneCache

指定使用ConcurrentHashMap的内存缓存提供程序。如果未指定属性net.fortuna.ical4j.timezone.cache.impl,则ical4j将回退到使用缓存管理器的JCacheTimeZoneCache,并且需要在类路径中存在有效的缓存库。

使用ical4j.properties文件的替代方法是以编程方式设置此属性,例如

System.setProperty("net.fortuna.ical4j.timezone.cache.impl", "net.fortuna.ical4j.util.MapTimeZoneCache")

请记住在调用Calendars.load(url)之前设置它,它应该可以正常工作。