EclipseでのTomcatプロジェクト作成

EclipseによるJava開発環境構築手順 - Archit!! の続きのようなもの。これもたびたび生徒さんから質問されるので、EclipsePleiades All in OneでTomcatプロジェクトの作成方法をまとめておこう。

  1. Eclipseを起動し、Javaパースペクティブを選択する。
  2. 左側に「パッケージ・エクスプローラー」があることを確認する。ない場合は、「ウィンドウ」<「ビューの表示」<「パッケージ・エクスプローラー」を選択する。
  3. パッケージ・エクスプローラーの白い部分(何も表示されていない部分)を右クリックするか、ファイルメニューから、「新規」<「その他」を選択する。「Java」<「Tomcatプロジェクト」を選択し、「次へ」をクリック。
  4. 「プロジェクト名」に好きなプロジェクト名(たとえば「HogeProject」)を入力し、「デフォルト・ロケーションの使用」のチェックが入っていることを確認し、「次へ」をクリック。
  5. 「コンテキスト名」、「Webアプリケーション・ルートとする…」ともに任意の名前(たとえば「/hoge」)を入力し、「コンテキスト定義の…」チェックボックスにチェックが入っていることを確認し、「完了」をクリック。
    この、「コンテキスト名」や「Webアプリケーション・ルートとする…」で入力した文字列がURLを決定する。たとえば「/hoge」と入力したら、このアプリへのアクセスURLは
    http://localhost:8080/hoge/
    となる。
  6. これで、パッケージエクスプローラーに「HogeProject」というのが作成されている。このプロジェクトを展開すると、以下に、
    JREシステム・ライブラリー
    ・参照ライブラリー
    hoge/WEB-INF/src
    ・work
    ・bin
    ・src
    hoge
    という項目が並んでいる。さらに、hoge以下はWEB-INF
  7. 「bin」「src」は削除してよい。それぞれのアイコンを右クリックして削除を選択する。
  8. 実際のWEBアプリは最後の「hoge」が表している。任意ファイルやディレクトリは今後この中に作成していくとして、JavaのWEBアプリの標準ディレクトリ構成と比べるとWEB-INF/classesディレクトリとWEB-INF/web.xmlがない。ところが、先の説明のように、コンパイルされたソースは自動的にclassesディレクトリに格納される仕組みなっているので、実はclassesディレクトリは存在し、Eclipseから見えないようにしてあるだけ(エクスプローラーなりFinderなりでworkspace\HogeProject\hoge\WEB-INFを見てみるとよい)。
  9. そこで、web.xmlを作成する。
    1. 「WEB-INF」を右クリックし、「新規」<「その他」を選択。
    2. XML」<「XMLファイル」を選択し、「次へ」をクリック。
    3. 「ファイル名」に「web.xml」を入力し、「次へ」をクリック。
    4. DTDファイルからXMLファイルを作成」を選択し、「次へ」をクリック。
    5. XMLカタログ・エントリーの選択」を選択し、下のリストから「-//Sun Microsystems, Inc //DTD Web Application 2.3//EN」を選択し、「次へ」をクリック。
    6. 「完了」をクリック。web.xmlファイルが作成され、XMLエディタが開かれる。下のタブを見て、「設計」タブが選択状態なら、「ソース」タブに切り替える。以下のように記述されているはず。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC 
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
</web-app>

これで、一通りの準備は整ったことになる。あとは、hogeディレクトリ以下にjspを作成していくなり、hoge/WEB-INF/src にjavaソースを作成していくなりすればWEBアプリをつくっていくことができる。
最後にひとつだけ。
もし、Tomcatがこのアプリを認識しなくなった場合は、プロジェクト(HogeProjectフォルダ)アイコンを右クリックし、
Tomcatプロジェクト」<「コンテキスト定義を更新」
をすれば、再認識してくれる。