当前位置: 首页 > 面试题库 >

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

竺绍辉
2023-03-14
问题内容

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

ProjectA
-src / main / java / …-
build.gradle

ProjectB
-src / main / java / …-
build.gradle

gradle eclipse将项目运行并将其导入Eclipse后,即使满足以下条件,有时我们也会得到“无法将MyType解析为类型”:

  • 我们的项目在其类路径中具有Gradle库容器
  • 这些项目在其Gradle容器中具有正确的工作区项目
  • 诸如CTRL+ Click之类的操作会在带有红色下划线(即,编译错误)的类型中起作用,这意味着Eclipse完全知道如何获得这些类型,但是编译器找不到它们
  • 命令行Gradle构建工作符合预期

这在整个团队中都在发生,我们无法弄清楚为什么Eclipse保持不同步并且无法不时进行编译。通常解决此问题的方法是:

  • 项目>在Eclipse中清理
  • Gradle cleanEclipse或Gradle Eclipse
  • 重新导入项目
  • 等等

其他说明:

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

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


问题答案:

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

相反,Eclipse的建议是手动配置项目(大部分情况下),仅让Gradle管理其Classpath容器,然后将Eclipse
.project,.classpath和.settings文件/文件夹检入SCM(svn,
git等)。这样一来,检查一个项目到工作区的过程是自动的,不需要运行gradle eclipsemvn eclipse:eclipse所有的时间。

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

这是Maven / Gradle与Eclipse之间的哲学差异之一。到IMO为止,IDE应该管理它的内容,而构建/依赖工具应该远离它。

尝试在项目配置中手动使事情变得正确,然后检入这些文件-看看它是否不能减轻您的团队在该领域面临的麻烦。



 类似资料:
  • 问题内容: 我的项目显示错误消息。我出于所有可能想到的原因抬起头来。我已设定和的路径。即使我的mapView可以正常工作(如果我在下面的代码中评论),这意味着已正确添加到项目中。 知道为什么会出错吗? 问题答案: 确保您已将最新的Android支持程序包添加到项目中。例如,此示例项目有一个合适的示例,并演示了的用法。

  • 问题内容: 我是android编程的新手。我正在按照本教程使用“ 支持Android 2.1及* 更高 版本 ”部分中的说明将 ActionBar 添加到Main_Activity中。 * 我按照本教程添加了一个Library-Project。然后,在添加库之后,在“ 将库添加到您的应用程序项目中 ”这一点上:我感到很迷…基本上是因为我在Eclipse中本身没有“ add ”选项。 但是我点击了“

  • 驴你看,我要添加截取到我的应用程序添加这行代码com.mcxioke。截取:库aar:1.0.0建立。gradle文件 我也试着添加改装。但它给出了相同类型的错误:未能解决:bla bla bla。 所以我认为在我的情况下gradle不能同步任何其他库不同于com.android....... 我也尝试将这行代码添加到我的build.gradle。但是什么都没有改变 请指教 编辑:添加注释后生成。

  • 我使用的是版本5.0.1 api级别21。我已在项目属性中添加了appcompat库。但我收到AppCompattivity无法解析为类型。 registerActivity.java: res/values/themes.xml: 编辑:

  • 我在 ubuntu 上使用 android studio 1.5.1。我想将谷歌分析添加到我的Android应用程序中。所以我遵循了谷歌分析文档,但是当我将mavenCentral()更改为jcenter()时,Android studio无法解析此类路径: 当我按下“同步项目与Gradle文件`按钮”,Android studio大约需要15分钟,最后说: 错误:连接超时。如果您使用HTTP代理

  • 问题内容: 这是我得到的错误: 这是我的代码: 另外,我在一个单独的类中声明了这一点: 是什么导致此错误,我该如何解决? 编辑:缩进,空格,命名约定和可读性问题已得到解决。 问题答案: 问题在于,这似乎是一个内部类(很难说,您的缩进是不好的),并且由于它不是静态的,因此您无法单独实例化它。 您要么需要自己创建一个类,要么使其成为一个类并将其实例化为(或者无论父类是什么,您的缩进在这里实际上都没有帮