Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse和Gradle类路径不同步:无法解析为类型_Java_Eclipse_Gradle - Fatal编程技术网

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

Java Eclipse和Gradle类路径不同步:无法解析为类型,java,eclipse,gradle,Java,Eclipse,Gradle,我们的Eclipse工作区遇到了令人沮丧的问题。下面是正在发生的事情的高级示例: 项目A --src/main/java/… --格雷德尔先生 项目b --src/main/java/… --格雷德尔先生 运行gradle eclipse并将项目导入eclipse后,我们偶尔会得到“MyType无法解析为类型”,即使以下情况属实: 我们的项目在其类路径上有Gradle库容器 项目在其Gradle容器中具有正确的工作区项目 像CTRL+Click这样的操作可以从显示为红色下划线的类型(即编译错误

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

项目A
--src/main/java/…
--格雷德尔先生

项目b
--src/main/java/…
--格雷德尔先生

运行
gradle eclipse
并将项目导入eclipse后,我们偶尔会得到“MyType无法解析为类型”,即使以下情况属实:

  • 我们的项目在其类路径上有Gradle库容器
  • 项目在其Gradle容器中具有正确的工作区项目
  • 像CTRL+Click这样的操作可以从显示为红色下划线的类型(即编译错误)中执行,这意味着Eclipse确切地知道如何访问这些类型,但编译器无法找到它们
  • 命令行Gradle按预期构建工作
这在整个团队中都在发生,我们无法理解为什么Eclipse总是不同步,不能不时编译。通常,解决问题的方法是以下组合:

  • Eclipse中的项目>清理
  • 梯度日食还是梯度日食
  • 重新导入项目
其他说明:

  • 使用Gradle版本2.2.1
  • 月食和火星月食都会发生
  • 使用jdk8

其他人在Eclipse和Gradle项目中有过这些类型的编译问题吗?

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

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

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

这是Maven/Gradle和Eclipse之间的哲学差异之一;说到这里,依我看,IDE应该管理它的东西,而构建/依赖工具应该置身事外


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

此外,演示如何使用
构建。gradles
@Jared Burrows,这应该是一个建设性的评论吗?我不知道为什么我不为Android开发的时候应该使用Android Studio。另外,我不使用IntelliJ,因为我需要的插件在Eclipse中。你能在Eclipse中刷新项目(F5)吗?@Robert,不幸的是,不能。刷新似乎不会改变任何东西。@Ded19它不仅仅是一种建设性的功能。您正在使用
Gradle
Gradle
的构建结构,为什么不使用自然支持它的
IDE
?您在
Eclipse
中需要哪些插件,而这些插件您在
Intellij
中没有或无法获得?谢谢您的回答。我今天正在做这个实验。为我的团队实现了这些变化。它工作得很好。非常感谢。从命令行运行mvneclipse:eclipse,然后右键单击eclipse->Refresh中的项目。赞成eclipse:eclipse任务已经退役并被淘汰,这是有充分理由的。我在任何情况下都不会使用它。另外,自Eclipse以来,它不太可能与较新版本的Eclipse一起工作:Eclipse已经有一段时间没有维护了。