LoginSignup
1
0

More than 3 years have passed since last update.

.projectが存在するにも関わらず「プロジェクト記述ファイル (.project) がありません」によりプロジェクトが開けない

Posted at

注意

本記事は以下の環境で、稼働確認を行いました。

  • Windows 10 Home
  • Pleiades All in One Eclipse (リリース 2019-06)

ただしWindowsやEclipseの異なるEditionやVersionでも同一の問題が発生することを確認しています。

現象

EclipseによるJavaプログラムの開発において、ワークスペースを開くと、プロジェクトがクローズ状態になっていることがあります。もちろん、そのプロジェクトをクローズした記憶などないにもかかわらずです。

image.png

そこでクローズしているプロジェクトをダブルクリックなどで開こうとすると、以下のようなエラーになり、開けないという現象が発生しました。

image.png

エラーメッセージは次の通りです。

'sample_project' のプロジェクト記述ファイル (.project) がありません。 このファイルには、プロジェクトに関する重要な情報が含まれています。 このファイルが復元されるまで、プロジェクトは正しく機能しません。

.projectなる隠しファイルがないとのことですが、ファイルシステム上で確認すると、プロジェクトディレクトリ直下に.projectが存在しています。

image.png

再現方法

今回の現象が発生する状況はさまざまだと思いますが、わたしの環境では以下の手順を踏むと問題が再現できました。

  1. ワークスペースworkspace_aを作成し、その配下にJavaプロジェクトsample_projectを作成する
  2. ワークスペースworkspace_bを作成。ディレクトリsample_projectworkspace_aの配下からworkspace_bの配下に移動。Eclipse上でファイル > ファイル・システムからプロジェクトを開くを選択し、sample_projectをインポートする。
  3. ディレクトリworkspace_cを作成。ディレクトリworkspace_bの配下にあるふたつのディレクトリ.metadatasample_projectworkspace_c配下に移動する。その後workspace_cをワークスペースに指定してEclipseを起動すると、上述した現象が再現する。

下図: ファイル > ファイル・システムからプロジェクトを開くsample_projectをインポートする際のイメージ

image.png

対策1 (おすすめ)

まず開けなくなったプロジェクトを右クリックし削除を選択。その後ディスク上からプロジェクト・コンテンツを削除にチェックをつけずにOKを押下します。

image.png

次にファイル > インポート > 既存プロジェクトをワークスペースへを選択し、次へを押下すると、プロジェクトのインポート画面が起動します。ここでルートディレクトリの選択にワークスペースのパスを入力し、さきほど削除したプロジェクトにチェックをつけ、完了を押下します。すると、さきほどまで正常に開くことができなかったプロジェクトが開けるようになっているはずです。

image.png

対策2 (おすすめでない)

プロジェクトが正常に開けなくなる原因はエラーメッセージにある.projectファイルではなく、.locationファイルが不正な状態に置かれたためです。.locationファイルのパスは次の通りになります: ${workspace}/.metadata/.plugins/org.eclipse.core.resources/.projects/${project_name}/.location

ここでは、開けなくなったプロジェクトの.locationファイルを削除します。するとEclipseの再起動などなくとも、開けなかったプロジェクトが開けるようになっています。

ただし.metadata以下のファイルやディレクトリの管理はEclipseに任せるべきであり、手動で触るべきではありません。個人的な経験則では.locationを削除しても問題になったことはありませんが、念のため、事前にバックアップをとるか、非可逆的に破壊されても問題ない環境で実施してください。

詳細

sample_project.locationは次のパスになります: workspace_c/.metadata/.plugins/org.eclipse.core.resources/.projects/sample_project/.location .locationファイルはバイナリなので、正確な内容は不明ですが、テキストエディタなどで無理やり開いてやると、なにやら絶対パスでworkspace_b/sample_projectを参照しているような記述が見て取れます。

image.png

「再現方法」の手順3.において、sample_projectworkspace_bからworkspace_cに移動しており、workspace_b/sample_projectは存在しません。つまり存在しないパスを参照しているためにプロジェクトが正常に開けなくなっているものと考えられます。

最後に「.locationファイルになぜ絶対パスが書かれてしまうのか?」という疑問ですが、正直なところこれはよくわかりません(´・ω・`) 手順2.のファイル > ファイル・システムからプロジェクトを開くが悪さをしているような気がしますが、詳細は不明です。

そもそも.metadataディレクトリはそのワークスペースのメタデータを格納しています。つまり.metadataはワークスペースごとに固有であるべきにもかかわらず、手順3.で別のワークスペースの.metadataを移動しています。根本的にはこれがよくないといえそうです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0