Eclipse .classpath / .projectファイルには何がありますか?


143

最近、チームメンバーの1人のEclipseプロジェクトに問題が発生しました。TomcatはアプリケーションのJARをデプロイしていませんでした。

最終的に、.classpathEclipseファイルが、プロジェクトが問題のないチームメンバーのものと同じではないことに気付きました。.classpathファイルを問題のないプロジェクトのファイルに置き換え、Tomcatのデプロイが完了しました。

ちょうど好奇心から、何かが間違っている場合、将来何を見ればいいのかファイルファイルの何があるのかを知るためにそこで何を追加できますか、それはすべてどういう意味ですか?.classpath.project


.classpathファイルはJavaに固有ですか?この質問はほとんど言語にとらわれないようですが、この回答からは、Javaにのみ関連があるように思えます。
Casey Kuball 2017

回答:


144

Eclipseはプラグインのランタイム環境です。Eclipseに表示される事実上すべては、Eclipse自体ではなく、Eclipseにインストールされたプラグインの結果です。

この.projectファイルはコアEclipseプラットフォームによって管理されており、その目的は、プラグインに依存しない一般的なEclipseビューからプロジェクトを記述することです。プロジェクトの名前は何ですか?ワークスペース内の他のどのプロジェクトが参照していますか?プロジェクトをビルドするために使用されるビルダーは何ですか?(「ビルド」の概念は、Javaプロジェクトだけに関係するのではなく、他のタイプのプロジェクトにも関係することに注意してください)

この.classpathファイルは、EclipseのJDT機能(機能 =プラグインのセット)によって管理されています。JDTはプロジェクト内にそのような「メタ」ファイルを複数保持します(.settingsプロジェクト内のディレクトリを参照)。.classpathファイルはそれらの一つです。具体的には、.classpathファイルには、プロジェクトを正しくコンパイルするためにJDT機能が必要とする情報が含まれています。プロジェクトのソースフォルダー(つまり、をコンパイルする); 出力フォルダー(コンパイル)クラスパスエントリ(ワークスペース内の他のプロジェクト、ファイルシステム上の任意のJARファイルなど)。

そのようなファイルをあるマシンから別のマシンに盲目的にコピーすることは危険な場合があります。たとえば、任意のJARファイルがクラスパスに配置されている場合(つまり、ワークスペースの外部にあり、絶対パスの命名によって参照されているJARファイル)、.classpathファイルは移植不可能になり、変更する必要があります。ポータブル。.classpathファイルの移植性を保証するために従うことができる特定のベストプラクティスがあります。


58
この全体の部外者として、これはすべて「Eclipseがプロジェクトワークスペースの管理に関するすべてをどうにかして、誰にも理解するのが難しすぎる不可解な黒の芸術にする」ことを意味します。
ウォーレンP

1
@Isaac- gitand Mavenでプロジェクトを管理する場合の好奇心から、つまり、単純化のために、リポジトリ(プロジェクト)の「ルート」フォルダに単一のsrcフォルダ(単純な「hello world」.javaファイルを保持)とプロジェクトのpox.xml: -ファイルは、私が正しくあなたを理解している場合ので、維持する必要(または多分必ずしも必要はありません)がありません.project.classpath.settings/に同様のファイル/フォルダgit(に追加IE-リポジトリ.gitignore例えばファイル)?
ガイアブラハム

1
@GuyAvrahamは、Eclipseでの作業方法、特にワークスペースをどのように初期化するかに依存します。新しいワークスペースでEclipseを起動してから、「既存のMavenプロジェクトのインポート」を使用しますか?もしそうなら、あなたは正しいです—これらのファイルはあなたのためにそれを処理するので、実際には必要ありm2eclipseません(または、少なくとも、それはそれが行うことになっていることです)。
アイザック

1
@buncisをに含め.projectないでください.gitignore。について.classpath—使用m2eclipseしていて、ワークスペースが起動時にMavenプロジェクトを更新するように構成されている場合、に追加.classpath.gitignoreても問題ありませんが、私は自分でテストしていません。
Isaac

1
@buncisは最後のコメントを修正しています。どうやら、M2Eは今日のプロジェクトの構成に非常に優れた仕事をしています。私は最近、すべてのタイプの約150のJavaプロジェクトのコードベースに取り組みました。私はそれらすべてを削除.project.classpathて、に追加しました.gitignore。これらはすべて正常に機能し、Gitでこれらのファイルを頻繁に更新する必要はありません。
アイザック

37

.project

ワークスペースでプロジェクトが作成されると、プロジェクトを説明するプロジェクト記述ファイルが自動的に生成されます。このファイルの唯一の目的は、プロジェクトを自己記述的にすることです。これにより、サーバーに圧縮またはリリースされたプロジェクトを別のワークスペースで正しく再作成できます。

.classpath

クラスパスは、プロジェクト内のどのJavaソースファイルとリソースファイルがJavaビルダーによって考慮されるかを指定し、プロジェクト外のタイプを検索する方法を指定します。Javaビルダーは、Javaソースファイルを出力フォルダーにコンパイルし、リソースをそこにコピーします。


11

上記のファイルは、さまざまなプラグインで拡張できるため、完全なリファレンスはありません。

基本的に、.projectファイルはビルダーやプロジェクトの性質設定などのプロジェクト設定を格納し、.classpathファイルは実行中に使用するクラスパスを定義します。クラスパスファイルには、プロジェクトのフォルダに対応するsrcおよびターゲットエントリが含まれています。conエントリは、JVM libsやEclipseプラグインの依存関係(通常のJavaプロジェクトの依存関係は特別なsrcエントリを使用して別様に表示される)のような、ある種の「仮想」エントリを記述するために使用されます。


3

この日食のドキュメントには、.projectファイル内のマークアップの詳細があります:プロジェクト記述ファイル

.projectファイルは次のように記述されています。

ワークスペースでプロジェクトが作成されると、プロジェクトを説明するプロジェクト記述ファイルが自動的に生成されます。このファイルの目的は、プロジェクトを自己記述的にすることです。これにより、圧縮またはサーバーにリリースされたプロジェクトを別のワークスペースで正しく再作成できます。このファイルは常に「.project」と呼ばれます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.