では、プロジェクトをデプロイして動作確認をしてみましょう――といきたいところですが、毎回毎回、ちょっと修正する度にデプロイして……というのは面倒臭いでしょう。そこで、ローカル環境でプロジェクトの動作確認をする方法を説明しておきましょう。
1. Project Explorerから実行するプロジェクトのフォルダ(「
MyGaeApp」フォルダ)を選択します。
2. <Run>メニューの
<Run As...>のサブメニューから「
Web Application」を選びます。これで、内臓のJavaサーバーが起動し、プロジェクトがその場で実行されます。
内蔵サーバーが起動したら、「
http://localhost:8888/helo.jsp」というアドレスにアクセスしてみましょう。作成した
helo.jspが表示されます。
<%= %>で既述しておいた、現在の時刻の値が表示されましたか? これはサーバー側で、
<%= java.util.Calendar.getInstance().getTime() %>の文が実行され、その実行結果(日時のテキスト)が表示されていたのです。
こんな具合に、内蔵サーバーでは、ドメインに「
localhost:8888」と指定してアクセスすると、プロジェクトのWebアプリケーションにアクセスできます。「
war」内に配置したファイル類も、その後にファイル名を指定してアクセスすることができます。
起動したサーバーを終了するには、下の方にある横長の「
Console」ビューを選択し、その上部に見える赤い
■マークのボタンをクリックします。これでサーバーが停止します。
■赤い×マークが表示されたら?
場合によっては、プロジェクトのフォルダと「
war」フォルダに赤い
×のアイコンが表示されて、プロジェクトが実行できない、という症状に見舞われる人もいるかも知れません。
war.xmlや
appengine-web.xmlをどこか書き間違えてしまったとか、プロジェクトのライブラリを勝手に削除してしまったなどということでないならば、原因はおそらく「
JDKではなくJREを使ってしまっている」ためでしょう。JDKは、Javaのプログラムをビルドするものです。これに対し、JREはプログラムを実行するだけのものです。プロジェクトをビルドするのにJREを使用してしまうと、ビルドできないためエラーになります。
画面下部の「
Markers」というビューを選択してみてください。ここに、発生したエラーの内容が表示されます。ここに「
Your project must be configured to use a JDK in order to use JSPs」とエラーメッセージが書かれていたら、この「JREを使っている」ことが原因です。以下の手順で設定を変更してください。
1. <Window>メニューから、一番下の
<Preferences>を選んでください。
2. 画面に、Eclipseの各種設定を行うウインドウが現れます。このウインドウの左側に、設定の項目が階層的なリストとして表示されています。この中から、「
Java」項目内にある「
Installed JRE」という項目を探してクリックしてください。
3. インストールされているJRE/JDKが一覧表示されます(おそらく、普通、デフォルトでは1つだけ)。現在使用している項目はチェックがONになっています。これがJREだと、プロジェクトのビルドがうまくいかずエラーのマークが表示されるのです。
4. もし、まだJDKの設定がなかったら、作成しましょう。「
Add...」ボタンをクリックしてください。画面にJDK追加のダイアログが現れます。
5. 「
Installed JDK Types」と表示が現れます。これはデフォルトで選択されている「
Standard VM」を選んでおけばOKです。
6. 「
JRE Definition」という表示に進みます。ここでJDKを設定します。まず、一番上の「
JRE Home:」という項目の右端にある「
Directory...」ボタンを押してください。JRE/JDKのフォルダを選択するダイアログが現れます。ここで、インストールされているJDKのフォルダを選択し、OKしてください。
JRE HomeにJDKのパスが設定されると同時に、その他の項目もすべて自動的に設定されます。
7. そのまま「
Finish」ボタンを押してダイアログを終了します。これで、追加したJDKが項目に表示されるようになります。
8. 新たに追加したJDKのチェックをONにして、ダイアログの「OK」ボタンを押して閉じてください。
――これで、JDKを使ってプロジェクトがビルドしなおされ、エラーの×マークが消えます。後は、そのまま普通にプロジェクトを実行したりデプロイしたりできます。