Eclipse .classpath/.project 文件中有啥?

Posted

技术标签:

【中文标题】Eclipse .classpath/.project 文件中有啥?【英文标题】:What's in an Eclipse .classpath/.project file?Eclipse .classpath/.project 文件中有什么? 【发布时间】:2011-11-03 10:34:15 【问题描述】:

最近,我们的一位团队成员遇到了一个 Eclipse 项目的问题。 Tomcat 没有部署应用程序的 JAR。

我们最终注意到.classpath Eclipse 文件与项目正常的团队成员不同。我们将 .classpath 文件替换为一个项目中的文件,该文件正常且 Tomcat 部署已完成。

只是出于好奇,想知道如果出现问题,将来会发生什么,.classpath.project 文件中的内容。我可以在那里添加什么,这都是什么意思?

【问题讨论】:

.classpath 文件是否特定于 Java?这个问题似乎与语言无关,但从this answer 看来,它只与 Java 有关。 相关,***.com/questions/13960556/… 【参考方案1】:

Eclipse 是插件的运行时环境。实际上,您在 Eclipse 中看到的所有内容都是安装在 Eclipse 上的插件的结果,而不是 Eclipse 本身。

.project 文件由核心 Eclipse 平台维护,其目标是从通用的、独立于插件的 Eclipse 视图中描述项目。项目名称是什么?它指的是工作区中的其他哪些项目?用于构建项目的构建器是什么? (请记住,“构建”的概念并不专门针对 Java 项目,也适用于其他类型的项目)

.classpath 文件由 Eclipse 的 JDT 功能(功能 = 插件集)维护。 JDT 在项目中保存了多个这样的“元”文件(参见项目内的.settings 目录); .classpath 文件只是其中之一。具体来说,.classpath 文件包含 JDT 功能正确编译项目所需的信息:项目的源文件夹(即要编译的 what);输出文件夹(编译的位置);和类路径条目(例如工作区中的其他项目、文件系统上的任意 JAR 文件等)。

盲目地将此类文件从一台机器复制到另一台机器可能会有风险。例如,如果将任意 JAR 文件放在类路径上(即,位于工作区之外并通过绝对路径命名引用的 JAR 文件),则 .classpath 文件将呈现为不可移植,必须在为了便携。可以遵循某些最佳实践来保证 .classpath 文件的可移植性。

【讨论】:

@Isaac - 出于好奇,如果我使用gitMaven 管理我的项目,这意味着我(为简单起见)存储库(项目)的“根”文件夹带有单个 src 文件夹(包含一个简单的“hello world”.java 文件)和项目的 pox.xml 文件 - 所以,如果我理解正确,没有必要(甚至可能不需要)保留: .project.classpath.settings/ 文件/文件夹以及 git 存储库中的文件/文件夹(例如,将它们添加到 .gitignore 文件中)? @GuyAvraham 这取决于您如何使用 Eclipse,特别是 - 您如何初始化工作区。您是否在新工作区上启动 Eclipse,然后使用“导入现有 Maven 项目”?如果是这样,那么您是对的 - 这些文件都不是真正需要的,因为 m2eclipse 会为您处理这些文件(或者,至少,它应该这样做)。 @Isaac - 是的,这正是我使用它的方式。感谢您的回复! @buncis .project 不应在 .gitignore 中。关于 .classpath — 如果您使用 m2eclipse 并且您的工作区配置为在启动时更新 Maven 项目,那么您应该可以将 .classpath 添加到 .gitignore 但我尚未测试我自己。 @buncis 只是更正了最后一条评论。显然,M2E 如今在配置项目方面做得非常好。我最近在一个包含大约 150 个所有类型的 Java 项目的代码库上工作。我从它们中删除了.project.classpath 并添加到.gitignore。一切正常,我不需要太频繁地在 Git 中无休止地更新这些文件。【参考方案2】:

.project

在工作区中创建项目时,会自动生成一个项目描述文件来描述该项目。此文件的唯一目的是使项目具有自描述性,以便压缩或发布到服务器的项目可以在另一个工作空间中正确重新创建。

.classpath

类路径指定项目中的哪些 Java 源文件和资源文件由 Java 构建器考虑,并指定如何在项目之外查找类型。 Java builder 将 Java 源文件编译到输出文件夹中,并将资源复制到其中。

【讨论】:

【参考方案3】:

上述文件没有完整的参考资料,因为它们可以被各种插件扩展。

基本上,.project 文件存储项目设置,例如构建器和项目性质设置,而 .classpath 文件定义运行期间使用的类路径。类路径文件包含与项目中的文件夹对应的 src 和 target 条目; con 条目用于描述某种“虚拟”条目,例如 JVM 库或 Eclipse 插件依赖项(普通 Java 项目依赖项的显示方式不同,使用特殊的 src 条目)。

【讨论】:

【参考方案4】:

此 Eclipse 文档在 .project 文件中包含有关标记的详细信息:The project description file

它将.project文件描述为:

在工作区中创建项目时,会自动生成一个项目描述文件来描述该项目。该文件的目的是使项目具有自描述性,以便压缩或发布到服务器的项目可以在另一个工作空间中正确重新创建。此文件始终称为“.project”

【讨论】:

以上是关于Eclipse .classpath/.project 文件中有啥?的主要内容,如果未能解决你的问题,请参考以下文章

eclipse卡在48%

IDEA 导入eclipse project 找不到 eclipse

eclipse怎么操作运行配置

怎么初始化eclipse设置

eclipse怎么操作运行配置

eclipse 使用教程