Eclipse Gradle 插件“无法获取类型的模型”

Posted

技术标签:

【中文标题】Eclipse Gradle 插件“无法获取类型的模型”【英文标题】:Eclipse Gradle Plugin 'could not fetch model of type' 【发布时间】:2014-12-04 13:31:24 【问题描述】:

我在 OS X 上使用 Gradle IDE 3.6.1 运行 Eclipse Luna,每当我尝试从 gradle 任务面板中选择一个项目时,我都会收到以下错误:

org.eclipse.osgi.internal.framework.EquinoxConfiguration$1
Could not fetch model of type 'EclipseProject' using Gradle distribution 
'https://services.gradle.org/distributions/gradle-2.0-bin.zip'.

还有其他人遇到过这个错误吗?我可以访问指定的 URL 来自己下载文件。因此,网络连接应该不是问题。

【问题讨论】:

【参考方案1】:

我在 Eclipse 2021-06、Java 1.8.0、gradle 4.4 中遇到了这个错误。 我尝试删除 gradle wrapper 二进制文件夹,预定义 gradle 版本等。

在选择覆盖工作区配置后,只需指定 gradle 主目录和 java 主目录。

【讨论】:

【参考方案2】:

问题出在 IDE(Eclipse 或 Spring Tool Suite)上默认配置的 java 版本。错误如下:

要修复它,您可以在 Configure Workspace Setting 选项中设置 Gradle 版本支持的 Java 版本。

最后,您可以刷新您的项目或继续您的创作。以后一切都会完美的。

【讨论】:

不知道它为什么起作用以及会有什么副作用。不过谢谢【参考方案3】:

我有一个非常相似的问题,并从我的 build.gradle 中删除以下内容修复了它。相同的配置在我拥有的所有其他 Gradle 项目中都有效,但由于某种原因不是这个......

allprojects 
    ...
    apply plugin: 'eclipse-wtp'
    ...
    // remove this eclipse config to make the error go away
    eclipse 
        classpath  defaultOutputDir = file('build-eclipse') 
    
    ...

【讨论】:

【参考方案4】:

从项目中删除 .gradle 文件夹解决了我的问题。

【讨论】:

【参考方案5】:

没有一个解决方案对我有用,我在 STS 4 上遇到了同样的错误,eclipse 版本:2.2.600.v20190605-1800。我的步骤是:

    从我的工作区中删除项目

    ./gradlew cleanEclipseWtp cleanEclipse eclipseWtp eclipse

    将项目作为现有的 eclipse 项目导入(不是现有的 gradle 导入)

成功了!

【讨论】:

【参考方案6】:

我在 Eclipse Neon 中遇到了同样的错误(版本号不同,但错误相同)。看起来有几个不同的事情会导致这个错误,但对我来说,这是 [MyProject]/.settings/org.eclipse.buildship.core.prefs 中的一个不正确的属性。

我有

connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)

但它必须是

connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(2.13))

2.13 应替换为您从 gradle -version 获得的任何版本号输出。

回来补充: 事实证明,真正的根本问题是 Gradle 版本之间的不兼容。我的 build.gradle 文件在旧版本的 Gradle 上运行良好,但使用了后来版本中已弃用和删除的东西。

解决方案是在向导中立即单击“完成”而不是“下一步”,然后修复 build.gradle 中的问题。

【讨论】:

该行由 Windows/Preferences/Gradle 设置。这与此错误“无法获取类型的模型”无关。 嗯,这就是我看到的错误,更改该行为我修复了它。 只是有些 Gradle 版本意外覆盖了另一个问题。 是的,我一点也不怀疑,但我不知道那个问题是什么。也许我的修复并没有真正解决根本问题,但它解决了它,所以它不再是我的问题,让我可以重新开始工作。 当然。没有什么反对的。很多时候,临时解决方案就足够了。这对您来说是一个很好且可以接受的解决方案。但是 Eclipse 插件的作者仍然应该寻找错误。至于我……看来,由于这个错误,我必须使用 Maven 而不是 Gradle。【参考方案7】:

您需要更新 Gradle 去: 选择“Help > About Eclipse”(在 Mac 上是“Eclipse > About Eclipse”)。

单击“安装详细信息”按钮以显示安装详细信息对话框。查看“已安装的软件”选项卡以查看所有已安装的插件。

搜索 Gradle(Eclipse Plug-ins for Gradle) 并更新。

之后第一次可能需要一些时间。

【讨论】:

【参考方案8】:

我在使用 eclipse Oxygen (4.7.2),在导入项目时遇到了类似的异常,这对我有用:

在 Windows 上导入时导入选项 点击配置工作区设置(将进入首选项窗口) 选择本地安装目录(我选择了'graddle wrapper') 应用、关闭并继续导入

以下是我遇到的错误

Loading Gradle project preview failed due to an error in the referenced Gradle build.
Could not fetch model of type 'GradleBuild' using Gradle distribution 'https://services.gradle.org/distributions/gradle-3.5-bin.zip'.

_BuildScript_
org.gradle.tooling.BuildException: Could not fetch model of type 'GradleBuild' using Gradle distribution 'https://services.gradle.org/distributions/gradle-3.5-bin.zip'.
    at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:51)
    at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:29)
    at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:41)
    at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:57)
    at Caused by: java.lang.ClassNotFoundException: _BuildScript_
    at org.gradle.groovy.scripts.internal.DefaultScriptCompilationHandler$ScriptClassLoader.loadClass(DefaultScriptCompilationHandler.java:386)
    ... 77 more


【讨论】:

【参考方案9】:

在我的情况下,我将 Gradle 版本从 4.7.rc2 更改为 4.6,然后它开始工作。

【讨论】:

【参考方案10】:

我最近遇到了一个类似的问题——即使把项目吹走并从 git 中删除一个新副本也没有解决它。当我在 Eclipse 之外复制它时,我意识到它并不是特定于项目的:

$ ./gradlew tasks

FAILURE: Build failed with an exception.

* What went wrong:
Expecting a stack map frame
Exception Details:
  Location:
    build_euvk0e0guiuwrf8fgn8svi2fy.run()Ljava/lang/Object; @16: aconst_null
  Reason:
    Error exists in the bytecode
  Bytecode:
    0x0000000: 2abb 0022 592a 2ab7 0025 ba00 3300 00b0
    0x0000010: 01b0                                   

做了什么修复它删除了 gradle 缓存:

$ rm -r ~/.gradle/caches 
$ ./gradlew tasks

不知何故,那里的 gradle 版本已损坏(可能与 Eclipse groovy 插件有关 - 在卸载它之前我经常遇到这个问题),并且将它吹走迫使它获得一个新副本。

希望这个答案可以帮助其他人避免拔头发。

【讨论】:

【参考方案11】:

配置中的错误引用。

覆盖配置: 项目 -> 属性 -> Gradle -> 覆盖工作区设置 -> 特定 Gradle 版本 -> 4.x

【讨论】:

我用 Brew 下载了 gradle 6.9 并指定本地安装导致我出现此错误。这个解决方案(设置特定版本)对我来说就像一个魅力。【参考方案12】:

此错误也可能是由 build.gradle 的上一行中的语法错误引起的。如果是这样,则该错误与您正在运行的 Gradle 或 Eclipse 版本无关。见this question

【讨论】:

【参考方案13】:

在我的例子中,我忘了把结束撇号 ' 作为一个值

【讨论】:

【参考方案14】:

打开CMD并输入gradle --gui,将寄存器Setup中的gradle gui的设置更改为堆栈跟踪输出:完整堆栈跟踪[-S]并将日志级别更改为信息。然后把当前目录改成你的build.gradle文件所在的目录,然后进入第一个寄存器,让gui处理这个文件。

应该显示一条错误消息。在那里你会发现你的 build.gradle 文件有什么问题。在我的情况下,缺少一个文件夹,这会导致此错误。

【讨论】:

【参考方案15】:

我遇到了同样的问题,有人建议gradle项目可能是由旧版本构建的。 我通过以下步骤解决问题:

    修改Eclipse中的配置,perfence ->gradle ->gradle distribution 。将其指向旧版本。 删除./gradle/wrapper中的文件 重新加载程序

【讨论】:

【参考方案16】:

我在使用 Eclipse 4.5 时遇到了同样的错误消息 在我的情况下,构建文件有错误,我不得不修改这一行

eclipse.classpath  
    plusConfigurations += configurations.providedCompile

进入这个

eclipse.classpath  
    plusConfigurations += [configurations.providedCompile]

之后一切都恢复正常了。

【讨论】:

【参考方案17】:

它发生的原因,因为可以下载新版本的 gradle。一旦你下载了新版本的 gradle,你的错误就会消失。

http://gradle.org/downloads

【讨论】:

抱歉,我有 Gradle 4.4.1,来自 2017 年 12 月,并且有同样的错误。显然,这不是解决方案。只是有些 Gradle 版本意外覆盖了另一个问题。但是我们应该解决真正的问题,而不是检查不同的版本以确保某些版本会起作用。 我使用的是 4.6,但仍然面临同样的问题。使用 maven 似乎比 Gradle 更容易和简单【参考方案18】:

Eclipse 4.4.1 在系统属性中使用非字符串值破坏了 Gradle Eclipse 支持。这已在 3.6.2 版本的最新 Gradle 中得到修复。从这个更新站点更新你的 Gradle:http://dist.springsource.com/snapshot/TOOLS/gradle/nightly

【讨论】:

Gradle 版本号和您引用的链接都不存在。 我猜你的意思不是 Gradle 的 3.6.2 版本(目前最新的是 2.13),而是 Gradle IDE 的 3.6.2(或更新版本)?不幸的是,Eclipse 4.5.2 上的 Gradle IDE 3.7.3 也会发生这种情况。 2017 年 12 月的 Gradle 4.4.1 仍然存在同样的问题。

以上是关于Eclipse Gradle 插件“无法获取类型的模型”的主要内容,如果未能解决你的问题,请参考以下文章

eclipse中在线安装gradle插件

Eclipse安装Gradle插件

Eclipse安装Gradle插件

如何在eclipse中添加gradle插件

如何在 Eclipse Buildship 插件中运行“gradle init”任务?

Gradle的安装与配置+eclipse里安装Gradle插件