Eclipse 和 Gradle 类路径不同步:无法解析为类型

Posted

技术标签:

【中文标题】Eclipse 和 Gradle 类路径不同步:无法解析为类型【英文标题】:Eclipse and Gradle classpath out of sync: cannot be resolved to a type 【发布时间】:2015-09-16 13:12:04 【问题描述】:

我们的 Eclipse 工作区遇到了一个令人沮丧的问题。这是正在发生的事情的一个高级示例:

项目A -- src/main/java/... -- build.gradle

项目B -- src/main/java/... -- build.gradle

在运行 gradle eclipse 并将项目导入 Eclipse 后,我们偶尔会收到“MyType cannot be resolved to a type”,即使以下情况属实:

我们的项目在其类路径中包含 Gradle 库容器 项目在其 Gradle 容器中具有正确的工作区项目 诸如 CTRL + Click 之类的东西来自带有红色下划线的类型(即编译错误),这意味着 Eclipse 确切知道如何获取这些类型,但编译器找不到它们 命令行 Gradle 构建按预期工作

整个团队都在发生这种情况,我们无法弄清楚为什么 Eclipse 总是不同步并且有时无法编译。通常解决问题的方法是:

项目 > 在 Eclipse 中清理 gradle cleanEclipse 或 gradle eclipse 重新导入项目 等

其他说明:

使用 Gradle 2.2.1 版 发生在 Eclipse Luna 和 Eclipse Mars 中 使用 JDK 8

在 Eclipse 中是否有其他人在 Gradle 项目中遇到过这些类型的编译问题?

【问题讨论】:

另外,请使用您的build.gradles @Jared Burrows,这应该是建设性的评论吗?当我不为 android 开发时,我不确定为什么要使用 Android Studio。另外,我不使用 IntelliJ,因为我需要的插件在 Eclipse 中。 在 Eclipse 中刷新项目 (F5) 就可以了? @Robert,很遗憾没有。刷新似乎没有任何改变。 @thedude19 这不仅仅是建设性的。您正在使用GradleGradle 的构建结构,为什么不使用自然支持它的IDE?你在Eclipse 中需要哪些插件在Intellij 中没有或无法获得? 【参考方案1】:

此类问题的一个来源可能是让 Gradle 生成 Eclipse 项目元数据/设置文件(运行 gradle eclipse 会得到什么)。我知道 Maven 和 Gradle 团队确实希望他们的工具(Maven 或 Gradle)能够生成这些东西,但众所周知,他们的工作并不理想。例如,我上次使用 Gradle 时,它​​配置了 .classpath 以使用硬编码的 JRE 库路径,而不是首选的执行环境。生成文件这种糟糕的工作让开发人员头疼。

相反,Eclipse 建议手动配置您的项目(大部分情况下),只让 Gradle 管理其 Classpath Container,然后将 Eclipse .project、.classpath 和 .settings 文件/文件夹检入您的 SCM (svn、git 等)。这样,将项目签出到工作区的过程是自动的,不需要一直运行 gradle eclipsemvn eclipse:eclipse

这就是 Eclipse 项目最初的设计和管理方式,而且效果很好。我曾在非常大的项目(Eclipse 中的 100 多个独立项目和数十个开发人员)中使用过类似的设置。它还减少了从零到运行应用程序的步骤数。

这是 Maven/Gradle 和 Eclipse 之间的哲学差异之一;归根结底,IMO,IDE 应该管理它的东西,构建/依赖工具应该不碍事。

尝试在您的项目配置中手动获取正确的内容,然后签入这些文件 - 看看它是否不能缓解您的团队在这方面面临的头疼问题。

【讨论】:

感谢您的精彩回答。我今天实际上正在尝试这个。 为我的团队实施了更改。它运行良好。谢谢! 从命令行运行 mvn eclipse:eclipse,然后右键单击 Eclipse 中的项目 -> Refresh 对我有用。竖起大拇指 eclipse:eclipse 任务已退役和过时,这是有充分理由的。在任何情况下我都不会使用它。另外,由于 eclipse:eclipse 已经有一段时间没有维护了,所以它根本不可能与较新版本的 Eclipse 一起工作。

以上是关于Eclipse 和 Gradle 类路径不同步:无法解析为类型的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse ADT 项目中的 Android 数据绑定(无 gradle)

Gradle 同步失败:无法找到请求目标的有效证书路径

android studio的 gradle 依赖同步错误解决方法

Gradle安装和在Eclipse中的使用

Android Studio中gradle命令指定打jar包...

如何在 Gradle 中定义编译时 *only* 类路径?