【问题标题】:ical4j 2.2.0 using Grape, throws java.lang.NoClassDefFoundError: javax/cache/configuration/Configuration when loading a calendarical4j 2.2.0 使用 Grape,在加载日历时抛出 java.lang.NoClassDefFoundError: javax/cache/configuration/Configuration
【发布时间】:2018-06-07 04:56:31
【问题描述】:

以前我已经能够运行这个从 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: Could not initialize class net.fortuna.ical4j.validate.AbstractCalendarValidatorFactory

任何帮助表示赞赏。

【问题讨论】:

    标签: groovy ical4j


    【解决方案1】:

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

    【讨论】:

    • 这里的困难是我本地没有文件,我使用葡萄来处理依赖管理link所以我必须在类似System.properties.'net.fortuna.ical4j.timezone.cache.impl' = 'net.fortuna.ical4j.util.MapTimeZoneCache'的代码中这样做,这会改变异常java.lang.NoClassDefFoundError: Could not initialize class net.fortuna.ical4j.validate.AbstractCalendarValidatorFactory 奇怪的是,一个月前它工作正常
    • @narayanatakacs 它也适用于葡萄——这个属性文件可以添加到你的 Groovy 脚本文件旁边,它会在类路径中看到。或者,您可以使用 System.setProperty() 方法设置此属性,我已经更新了答案以涵盖此用例。
    猜你喜欢
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 2018-08-22
    • 2021-08-19
    相关资源
    最近更新 更多