【问题标题】:"unable to resolve class" error after upgrading gradle 3 to gradle 4将 gradle 3 升级到 gradle 4 后出现“无法解析类”错误
【发布时间】:2019-05-06 08:19:02
【问题描述】:
  • Grails 版本:3.2.9
  • Gradle 初始版本:3.4.1(此版本一切正常)
  • Gradle 升级版本:4.10.3
  • 插件:org.grails.grails-gsp

当我将 gradle 版本升级到 4.10.3 后运行 gradlew war 时,在执行 compileGroovyPages 任务期间开始出现以下错误:

dashboard_gsp.groovy: 2: 无法解析类 com.abnd.CarStatusEnum

@第 2 行,第 1 列。

导入 com.abnd.CarStatusEnum

^

com.abnd.CarStatusEnum 类的位置是 src/main/groovy/com/abnd/CarStatusEnum,在运行构建的同一项目中,gradlew war 任务使用 gradle 版本 3.4.1 成功完成。但是,当我将 gradle 版本升级到 4.10.3 时,我开始收到此错误。 gradle 4.1 版也是如此。

1) 任何线索可能是什么问题?

2) 将 gradle 版本 4.x.x 或 5.x.x 与 grails 版本 3.x.x 与 gradle 5.x.x 一起使用是个好主意吗?作为一些 grails 插件(如 grails-gsp v3),我开始遇到更多问题.3.2 是最新的稳定版本)使用一些已在 gradle 4.x.x 中弃用并从 gradle 5.x.x 中删除的功能(请参阅下面的错误)?

无法应用插件 [id 'org.grails.grails-gsp']

无法获取 org.gradle.api.internal.tasks.DefaultSourceSetOutput 类型的主类的未知属性“classesDir”。

【问题讨论】:

  • 您在构建中有些东西不同步。如果没有看到来源,可能很难准确地说出那是什么。我建议将 Gradle 5.1.1 与 Grails 4.0.0.RC1 一起使用。
  • @JeffScottBrown 我目前无法升级 grails,只需要升级 gradle 才能使用成熟版本的构建缓存。不幸的是,由于明显的原因,我无法在此处发布我的构建脚本,但我想知道如何继续,因为错误消息没有多大帮助。 org.grails.grails-gsp 插件是否可能与 gradle 4 不兼容?
  • 我将首先使用您正在使用的任何版本的 Grails 创建一个新项目,并将该构建脚本与升级后的脚本进行比较,看看是否有任何看起来相关的内容。
  • 100 次道歉。我看错了标题。我以为您正在从 Grails 3 升级到 Grails 4。我现在看到您正在从 Gradle 3 升级到 Gradle 4。很抱歉造成混淆。

标签: gradle grails


【解决方案1】:

1) 任何线索可能是什么问题?

是的。错误消息是 GSP 编译器找不到枚举类的线索。这是因为我们的插件与 Gradle 4.10.3 不兼容。

2) 将 gradle 版本 4.x.x 或 5.x.x 与 grails 版本 3.x.x

没有。您使用的 Grails 版本不支持这些 Gradle 版本。

希望对你有帮助。

【讨论】:

  • btw... 您可以通过在 GSP 中没有导入语句(或依赖于导入语句的代码)开始来解决该特定错误,这绝不是一个好主意,但那是只是让您了解与版本不兼容相关的其他问题。
  • 感谢您的回复。是否有 grails 与 gradle 版本的官方兼容性图表?
猜你喜欢
  • 2017-09-26
  • 2022-12-21
  • 1970-01-01
  • 1970-01-01
  • 2018-08-14
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 2020-04-04
相关资源
最近更新 更多