Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy ical4j 2.2.0使用Grape,在加载日历时抛出java.lang.NoClassDefFoundError:javax/cache/configuration/configuration_Groovy_Ical4j - Fatal编程技术网

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

Groovy ical4j 2.2.0使用Grape,在加载日历时抛出java.lang.NoClassDefFoundError:javax/cache/configuration/configuration,groovy,ical4j,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/

在此之前,我已经能够运行此脚本,从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[可选*]-支持缓存timzeone定义。*注意:如果未包括在内,则必须为net.fortuna.ical4j.timezone.cache.impl配置设置一个值

但是,现在我得到了这个
java.lang.NoClassDefFoundError:无法初始化类net.fortuna.ical4j.validate.AbstractCalendarValidatorFactory


非常感谢您的帮助。

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)
之前设置它,它应该可以工作。

这里的困难在于我没有本地文件,我正在使用grape来处理依赖项管理,所以我必须在类似
System.properties.'net.fortuna.ical4j.timezone.cache.impl'='net.fortuna.ical4j.util.MapTimeZoneCache'
的代码中完成这将异常更改为
java.lang.NoClassDefFoundError:无法初始化类net.fortuna.ical4j.validate.AbstractCalendarValidatorFactory
奇怪的是,它在一个月内运行良好ago@narayanatakacs它也可以与Grapes一起使用——这个属性文件可以添加到Groovy脚本文件的旁边,并且可以在类路径中看到。或者,您可以使用
System.setProperty()
方法设置此属性,我已经更新了答案以涵盖此用例。