【Eclipse使用】作成中のワークスペースを他のPCに移す際の注意

#備忘録と共有
プログラミング初心者の私が、Eclipseを使用してJavaでWebアプリケーションを作っていた時の事。
ワークスペース→プロジェクトを作成し、色々コードを書いていたのですが、違うPCで作業をしなくてはならなくなったため、ワークスペースごとコピーして別の端末に移して作業をしようとした際に起こった困った事。

###次のようなエラーが出てしまいました
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/36ecabc6-033e-75cd-21c7-753946474ecd.jpeg)

下部のマーカータブで、①javaのビルドパスの問題、②ファセット・プロジェクトの問題が出ています。

##前提・考察
Eclipseでは、ワークスペースの設定はワークスペースごとに.metadataファイルに保存される。
ワークスペースごとコピーして違う環境にデータを移した時に、移動先のEclipseと設定ファイルとの間で、上手く設定の受け渡しが出来なかったのか、上記のエラーがでてしまったのだと考えます。
最初に作業したPCで設定したパースペクティブやテーマの設定も、初期化されてしまいました。
プロジェクトは読み込まれていない状態で、サーバーは作成されていない状態です。

プロジェクトはインポートメニューから、「既存のプロジェクトをワークスペースへ」でインポートしましたが、
ワークスペースの設定と、プロジェクトごとの設定が、うまくうまくリンクしなかったのではないか。

####プロジェクトのプロパティを見てみる

この状態で、インポートしたプロジェクトを右クリック＞プロパティから、Javaのビルドパスを開くと、《JREシステム・ライブラリー》がアンバインド済みとなっています。
また、《サーバ・クラスパス・コンテナ》も同じくアンバインド済みです。

![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/e95d34b0-ff42-d35e-7ec9-d4e072877d33.jpeg)
これは、プロジェクトの設定は、前のPCからのものが引き継がれているが、ワークスペースのそれとは違っているということなのでしょうか。

#JREシステム・ライブラリから解決する
JREシステム・ライブラリを選択した状態で、編集をクリックすると、下の画面が表示される。
![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/a9eaac16-51ee-4fa7-d599-675335364434.jpeg)
↑インストール済みのJREをクリック

![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/705c233e-84c9-7110-6f20-93b59e8f7f67.jpeg)
↑検索をクリック

![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/1e7b7b25-3146-7c99-3861-d76cc6076e9c.jpeg)
↑JREがインストールされているフォルダを選択すると、自動的に検索・追加を行ってくれる

![6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/80c3fd45-5114-d421-d891-42b9aceaf57c.jpeg)
↑インストール済みのJREに検索したものが追加された。
移行前のPCではjava11だったため、11を選択してデフォルトに設定しておく。

![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/d6e0aadb-a8b6-e37c-f571-aa4b35c2a8cc.jpeg)
↑画面を戻ると、代替の欄で追加したJREを選択することが出来るようになっているので、11にしておく。

![8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/d6c8b59e-b04c-b2ab-c86b-5f4b6c947a96.jpeg)
↑すると、最初に表示されていた×が消えました。
なぜか、適用して閉じ、また開くと×が付いているので、再度インストール済みのJREから指定のバージョンを選択する作業をすると、×とアンバインド済みの表示が消え、モジュールパスの方に移動した。（下の画像）

![9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/ccf9e41f-96ef-a9a8-5456-fde67e4e12dc.jpeg)

#次に、サーバ・クラスパス・コンテナーを解決する
今回は、ワークスペースを開いた段階でサーバが作成されていなかった状態なので、サーバを作成する。
下部の、「使用可能なサーバがありません。このリンクをクリックして新規サーバを作成してください」をクリック。
![12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/39ba5a65-43ce-1e18-34a7-c2322036741e.jpeg)


今回はTomcat9だったので、それを選択する（次の画像の左窓）。
また、注意しないといけないのが、サーバー名の下の、サーバ・ランタイム環境の設定である。
サーバ・ランタイム環境の右下の「ランタイム環境の構成」をクリックすると、画像の右窓がでてくるので、Apache Tomcatの名前の箇所を選択する。すると、右側の編集ボタンが選択できるようになるので、クリックする。

![13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/96446c96-ea35-e2d7-f7d9-3b8e4604c36a.jpeg)

すると、次のように現在選択されているサーバ・ランタイムの環境が表示される
![14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/d1a77136-b1ee-72b1-3855-59e58a70d800.jpeg)
↑Tomcatのインストールディレクトリの確認と、先ほど解決したJREシステム・ライブラリの設定と紐づいていないといけない。
ここでは、先ほどすでにJava11をデフォルトJREに設定してある為、JREの欄はワークベンチ・デフォルトJREで問題ない。

もし違うJREが選択されていたら、直すか、最初の新規サーバの定義の窓から、「追加...」をクリックして設定する。

####確認
プロジェクトを右クリック＞Javaのビルドパスを再度開き、ライブラリータブをみると、サーバ・クラスパス・コンテナがアンバインド済みになっているが、ここを選択した状態で、右側の編集ボタンをクリックする。

すると、下の画像の右側の窓がでるので、先ほど設定したランタイム（他の設定を作成していれば、それも表示される）を選択する。
![15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/54160fcd-eadf-20fb-4f2a-f8475932f565.jpeg)

↓最後に、プロジェクトのプロパティまで画面を戻り、ターゲット・ランタイムの項目をクリックすると、ランタイム一覧が表示されるので、ここも、先ほど設定したランタイムにチェックが入るようにする。
（私の場合は違うところにチェックが入っていた）
![16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/7bb37836-3321-3a21-6300-b4b90bb61541.jpeg)

これで、適用して閉じれば、全てのエラーが消えました。
（文字コードや、警告/エラーで個別の設定をしている場合は、それは別で設定し直さないといけません）

#もしかすると
もしかすると、これが一番重要かもしれませんが。
ワークスペースごと違う環境にフォルダを移動するには、エクスポート/インポートを使用するべきなのかもしれません。
「ワークスペースごと」と言いましたが、正確には、「ワークスペース（の設定）を」です。

####エクスポート
◆ファイル＞エクスポート
開いたエクスポートウィザードで、一般＞設定→次へ

「すべてエクスポート」にチェックが入った状態で、宛先設定ファイルからエクスポート先のフォルダ名・ファイル名を指定して完了をクリックすると、指定した場所に.epfファイルが出来ています。（このファイルにはプロジェクトは含まれていません）

####インポート
インポートする際は、
まず、Eclipseを起動する時には何かしらのワークスペースを開くと思いますが、そこに、先ほどエクスポートしたワークスペースの設定（.epf）を読み込むといったイメージです。
プロジェクト自体は、出来上がったワークスペースに、インポートする形で読み込んで使用します。
インポートする際に、読み込んだプロジェクトをワークスペースにコピーする設定もあったと思いますので、必要に応じて選択する必要があります。

◆ファイル＞インポート
開いたインポートウィザードで、一般＞設定→次へ

すべてインポートにチェックが入った状態で、完了



##最後になりますが
長々と呼んで頂き、ありがとうございました。
プログラミングに関しても、Eclipse使用歴に関しても短い為、理解がまだ浅い部分はありますが、問題は時間が掛かっても1つひとつ解決していきたいと思っています。