我有以下问题:
如果我使用 LIBGDX Project Setup(最新版本 1.11.0)创建一个新项目,然后在 Android Studio 中打开它,我可以毫无问题地升级到 Gradle 7.4.2。 但是,当升级到 Gradle 8.0.1 时,我总是遇到相同的错误:“无法加载类 'org.gradle.api.internal.artifacts.dsl.dependency.DependencyFactory$ClassPathNotation'。” “org/gradle/api/internal/artifacts/dsl/dependencies/DependencyFactory$ClassPathNotation”
它一定与 HTML 有关,因为如果我创建一个没有 HTML 的 LIBGDX 设置,我可以毫无问题地更新到 Gradle 8.0.1。没有 HTML 一切都可以正常工作。
Android Studio Flamingo 补丁 2,LIBGDX 设置版本 1.11.0
编辑:有关简短而直接的答案,请参阅Jiří的帖子。下面阐述相应的背景。
让我们看一下错误消息。
Unable to load class 'org.gradle.api.internal.artifacts.dsl.dependencies.DependencyFactory$ClassPathNotation'.
关于 将构建从 Gradle 7.x 升级到 8.0 的指南说 Internal DependencyFactory 已重命名。
内部
类型已重命名为org.gradle.api.internal.artifacts.dsl.dependencies.DependencyFactory
。作为内部类型,不应使用它,但出于兼容性原因,内部org.gradle.api.internal.artifacts.dsl.dependencies.DependencyFactoryInternal
类型仍然可用。此类型名称已弃用,并将在 Gradle 8.0 中删除。此功能的公共 API 位于ClassPathNotation
,其中DependencyHandler
等方法提供相同的功能。localGroovy()
这完全符合更新到 Gradle 8 时收到的错误消息。这些内部 Gradle API 主要与 Gradle 插件的开发人员相关。这就是为什么上述 Gradle 升级指南建议第二步
更新您的插件。
一些插件将在新版本的 Gradle 中失效,例如因为它们使用已删除或更改的内部 API。当插件尝试使用 API 的已弃用部分时,上一步将通过发出弃用警告来帮助您识别潜在问题。
现在,您在 libGDX 的 HTML 设置方面遇到了问题,但在非 HTML 设置方面则没有问题,因为使用了不同的插件。那些非 HTML 插件(例如 Android Gradle 插件)要么不受影响,要么已及时更新。如果我没记错的话,libGDX HTML 项目中必须应用两个插件—— WAR 插件 和 GWT 插件。第一个是 Gradle Core 插件,我怀疑它不是最新的。后者是自定义的,有多种实现可供选择,如您所见。
所以——确保您的所有插件都是最新的。如果这没有帮助,并且您需要 libGDX 的 HTML 设置,那么您现在可能必须坚持使用 Gradle 7。