LibGDX - android studio:无法加载类“org.gradle.api.internal.artifacts.dsl.dependency.DependencyFactory$ClassPathNotation”

问题描述 投票:0回答:2

我有以下问题:

如果我使用 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

非常感谢您的帮助...

java android html gradle libgdx
2个回答
2
投票

您首先必须将

org.gretty:gretty:3.0.7
更新到版本
4.0.3
,然后 Gradle 升级才能正常工作。


相应的背景请参阅这篇文章


1
投票

编辑:有关简短而直接的答案,请参阅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
。作为内部类型,不应使用它,但出于兼容性原因,内部
ClassPathNotation
类型仍然可用。此类型名称已弃用,并将在 Gradle 8.0 中删除。此功能的公共 API 位于
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。

© www.soinside.com 2019 - 2024. All rights reserved.