#備忘録と共有
プログラミング初心者の私が、Eclipseを使用してJavaでWebアプリケーションを作っていた時の事。
ワークスペース→プロジェクトを作成し、色々コードを書いていたのですが、違うPCで作業をしなくてはならなくなったため、ワークスペースごとコピーして別の端末に移して作業をしようとした際に起こった困った事。
下部のマーカータブで、①javaのビルドパスの問題、②ファセット・プロジェクトの問題が出ています。
##前提・考察
Eclipseでは、ワークスペースの設定はワークスペースごとに.metadataファイルに保存される。
ワークスペースごとコピーして違う環境にデータを移した時に、移動先のEclipseと設定ファイルとの間で、上手く設定の受け渡しが出来なかったのか、上記のエラーがでてしまったのだと考えます。
最初に作業したPCで設定したパースペクティブやテーマの設定も、初期化されてしまいました。
プロジェクトは読み込まれていない状態で、サーバーは作成されていない状態です。
プロジェクトはインポートメニューから、「既存のプロジェクトをワークスペースへ」でインポートしましたが、
ワークスペースの設定と、プロジェクトごとの設定が、うまくうまくリンクしなかったのではないか。
####プロジェクトのプロパティを見てみる
この状態で、インポートしたプロジェクトを右クリック>プロパティから、Javaのビルドパスを開くと、《JREシステム・ライブラリー》がアンバインド済みとなっています。
また、《サーバ・クラスパス・コンテナ》も同じくアンバインド済みです。
これは、プロジェクトの設定は、前のPCからのものが引き継がれているが、ワークスペースのそれとは違っているということなのでしょうか。
#JREシステム・ライブラリから解決する
JREシステム・ライブラリを選択した状態で、編集をクリックすると、下の画面が表示される。
↑インストール済みのJREをクリック
↑JREがインストールされているフォルダを選択すると、自動的に検索・追加を行ってくれる
↑インストール済みのJREに検索したものが追加された。
移行前のPCではjava11だったため、11を選択してデフォルトに設定しておく。
↑画面を戻ると、代替の欄で追加したJREを選択することが出来るようになっているので、11にしておく。
↑すると、最初に表示されていた×が消えました。
なぜか、適用して閉じ、また開くと×が付いているので、再度インストール済みのJREから指定のバージョンを選択する作業をすると、×とアンバインド済みの表示が消え、モジュールパスの方に移動した。(下の画像)
#次に、サーバ・クラスパス・コンテナーを解決する
今回は、ワークスペースを開いた段階でサーバが作成されていなかった状態なので、サーバを作成する。
下部の、「使用可能なサーバがありません。このリンクをクリックして新規サーバを作成してください」をクリック。
今回はTomcat9だったので、それを選択する(次の画像の左窓)。
また、注意しないといけないのが、サーバー名の下の、サーバ・ランタイム環境の設定である。
サーバ・ランタイム環境の右下の「ランタイム環境の構成」をクリックすると、画像の右窓がでてくるので、Apache Tomcatの名前の箇所を選択する。すると、右側の編集ボタンが選択できるようになるので、クリックする。
すると、次のように現在選択されているサーバ・ランタイムの環境が表示される
↑Tomcatのインストールディレクトリの確認と、先ほど解決したJREシステム・ライブラリの設定と紐づいていないといけない。
ここでは、先ほどすでにJava11をデフォルトJREに設定してある為、JREの欄はワークベンチ・デフォルトJREで問題ない。
もし違うJREが選択されていたら、直すか、最初の新規サーバの定義の窓から、「追加...」をクリックして設定する。
####確認
プロジェクトを右クリック>Javaのビルドパスを再度開き、ライブラリータブをみると、サーバ・クラスパス・コンテナがアンバインド済みになっているが、ここを選択した状態で、右側の編集ボタンをクリックする。
すると、下の画像の右側の窓がでるので、先ほど設定したランタイム(他の設定を作成していれば、それも表示される)を選択する。
↓最後に、プロジェクトのプロパティまで画面を戻り、ターゲット・ランタイムの項目をクリックすると、ランタイム一覧が表示されるので、ここも、先ほど設定したランタイムにチェックが入るようにする。
(私の場合は違うところにチェックが入っていた)
これで、適用して閉じれば、全てのエラーが消えました。
(文字コードや、警告/エラーで個別の設定をしている場合は、それは別で設定し直さないといけません)
#もしかすると
もしかすると、これが一番重要かもしれませんが。
ワークスペースごと違う環境にフォルダを移動するには、エクスポート/インポートを使用するべきなのかもしれません。
「ワークスペースごと」と言いましたが、正確には、「ワークスペース(の設定)を」です。
####エクスポート
◆ファイル>エクスポート
開いたエクスポートウィザードで、一般>設定→次へ
「すべてエクスポート」にチェックが入った状態で、宛先設定ファイルからエクスポート先のフォルダ名・ファイル名を指定して完了をクリックすると、指定した場所に.epfファイルが出来ています。(このファイルにはプロジェクトは含まれていません)
####インポート
インポートする際は、
まず、Eclipseを起動する時には何かしらのワークスペースを開くと思いますが、そこに、先ほどエクスポートしたワークスペースの設定(.epf)を読み込むといったイメージです。
プロジェクト自体は、出来上がったワークスペースに、インポートする形で読み込んで使用します。
インポートする際に、読み込んだプロジェクトをワークスペースにコピーする設定もあったと思いますので、必要に応じて選択する必要があります。
◆ファイル>インポート
開いたインポートウィザードで、一般>設定→次へ
すべてインポートにチェックが入った状態で、完了
##最後になりますが
長々と呼んで頂き、ありがとうございました。
プログラミングに関しても、Eclipse使用歴に関しても短い為、理解がまだ浅い部分はありますが、問題は時間が掛かっても1つひとつ解決していきたいと思っています。