【问题标题】:Grails ehcache plugin compile errorGrails ehcache插件编译错误
【发布时间】:2015-02-03 17:18:53
【问题描述】:

我正在尝试在我的 grails 应用程序中使用最新版本的 grails ehcache plugin (1.0.4),但是当我将插件作为依赖项添加到 BuildConfig.groovy 中时,我在启动时遇到编译错误:

| Error 编译错误:启动失败: 使用 javac 编译时出现编译错误。 /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:202:错误:ReloadableCacheManager.ProxyEhcache 不是抽象的,不会覆盖抽象方法getSearchesPerSecond()在 Ehcache 受保护的类 ProxyEhcache 实现 Ehcache { ^ /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:805:错误:ReloadableCacheManager.ProxyEhcache中的getStatistics()无法在Ehcache中实现getStatistics() 公共统计网关 getStatistics() ^ 返回类型 StatisticsGateway 与 Statistics 不兼容 /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:663:错误:找不到符号 返回 getUnderlyingEhcache(name).getSearchAttributes(); ^ 符号:方法 getSearchAttributes() 位置:接口Ehcache /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:660:错误:方法不覆盖或实现超类型的方法 @覆盖 ^ /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:758:错误:找不到符号 返回 getUnderlyingEhcache(name).calculateOnDiskSize(); ^ 符号:方法 calculateOnDiskSize() 位置:接口Ehcache /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:755:错误:方法没有覆盖或实现超类型的方法 @覆盖 ^ /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:765:错误:找不到符号 返回 getUnderlyingEhcache(name).getAll(arg0); ^ 符号:方法 getAll(Collection) 位置:接口Ehcache 其中 CAP#1 是一个新的类型变量: CAP#1 从捕获的 ? /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:761:错误:方法没有覆盖或实现超类型的方法 @覆盖 ^ /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:770:错误:找不到符号 return getUnderlyingEhcache(name).hasAbortedSizeOf(); ^ 符号:方法 hasAbortedSizeOf() 位置:接口Ehcache /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:768:错误:方法没有覆盖或实现超类型的方法 @覆盖 ^ /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:777:错误:找不到符号 getUnderlyingEhcache(name).putAll(arg0); ^ 符号:方法 putAll(Collection) 位置:接口Ehcache /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:773:错误:方法没有覆盖或实现超类型的方法 @覆盖 ^ /Users/rcgeorge23/Documents/workspace/grails-cache-ehcache/src/java/grails/plugin/cache/ehcache/GrailsEhCacheManagerFactoryBean.java:783:错误:接口Ehcache中的putIfAbsent方法不能应用于给定类型; return getUnderlyingEhcache(name).putIfAbsent(arg0, arg1); ^ 必需:元素 找到:元素,布尔值

还有其他人遇到过这个问题吗?我注意到 ehcache 插件仍在维护中,所以我猜它适用于当前版本的 grails,但我似乎无法让它为我工作。我还尝试从 github 中的 grails-ehcache 项目中克隆最新提交并将其作为本地插件项目引用,但我仍然遇到相同的编译错误。

我正在使用 Grails 2.3.7。

编辑 1:

我能够使用 ehcache 插件的 1.0.0 版本启动我的应用程序,但我想如果我使用这个版本可能会错过一些重要的增强功能...

编辑 2:

现在,我刚刚从 github 克隆了 1.0.0 版本,cherry 选择了 TTL 缺陷的修复程序 (https://jira.grails.org/browse/GPCACHEEHCACHE-6)。最好找出为什么我不能让 1.0.4 工作,但我现在有一个解决方法。

【问题讨论】:

  • 试试grails clean-allgrails clean(不会受伤)。
  • 哈哈,是的,这是我尝试的第一件事!

标签: grails ehcache


【解决方案1】:

它适用于我的基本 2.3.11 应用程序,所以我猜测其他东西正在引入旧版本的 ehcache jar。如果你运行grails dependency-report,你可能会看到。

1.0.4 插件依赖于net.sf.ehcache:ehcache:2.9.0,但大多数其他依赖于 Ehcache 的插件还没有更新到最新版本,所以你可能会看到你也依赖于 net.sf.ehcache:ehcache-core:2.4.8,但是版本可能有点偏。请注意,他们从名称中删除了“-core”,这也可能是造成这种情况的原因,因为除非组和名称完全相同,否则一个罐子不能驱逐另一个罐子。因此,两个人有可能在类路径中同时拥有两个 jar,但它们以相反的顺序结束,并且对于一个人来说工作正常,因为加载了较新的 jar 的类,但不是另一个因为加载了旧的类。

如果您暂时从

切换,您将获得更好的依赖关系报告
grails.project.dependency.resolver = "maven"

grails.project.dependency.resolver = "ivy"

BuildConfig.groovy - maven 解析器只生成到控制台的输出,但 Ivy 输出还包括 HTML 输出。

如果您无法解决此问题,请创建一个单独的小型测试应用并对其进行配置,使其以同样的方式失败 - 您可能只需要从您的应用中复制 BuildConfig.groovy。在https://jira.grails.org/browse/GPCACHEEHCACHE 创建一个问题,我会看看。如果您需要做的只是更改 BuildConfig.groovy,请将其附加到问题中,否则运行 grails bug-report 并附加它创建的 zip。

【讨论】:

  • 谢谢伯特 - 有机会我会试试看的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多