Eclipse OxygenでStruts1

## Eclipse Oxygenのダウンロードとインストール

[Enabling Open Innovation & Collaboration | The Eclipse Foundation](https://www.eclipse.org/)
こちらの公式サイトのダウンロードページからダウンロードしてインストール
デフォルト状態から特に変更すべき点はない
ワークスペースはJavaのバージョンの設定の関係で、既存のものではなく新規作成したほうが良い

## JDKのインストール

今回はJava5を利用する。
今回はTomcat5.5を利用するため、Java4以降なら何でも動くはず。合わせたほうが無難。
[Tomcat公式サイトのTomcatとJavaバージョンの関係性](http://tomcat.apache.org/whichversion.html)

1. JDK1.5のダウンロードとインストール
[Java Archive Downloads - Java SE 5 - Oracle](http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase5-419410.html)
OSへの環境変数設定は不要

2. EclipseにJDK1.5を設定
    - Eclipseを起動し、ウィンドウ>設定>JREで検索
    - インストール済みのJRE項を選び、追加ボタンを押下
    - 標準VMを選び次へを押下
    - JREホームにイントールしたJDKを選択。jdkフォルダのbinではなく、その１回層上のディレクトリを選択
    ![2.PNG](https://qiita-image-store.s3.amazonaws.com/0/129639/26abf012-6389-c23f-5b0b-3fe1e681ddb0.png)
    - 完了

## Tomcat5.5のダウンロードとインストール
こちらのアーカイブから
https://archive.apache.org/dist/tomcat/tomcat-5/v5.5.20/bin/
apache-tomcat-5.5.20.exeをダウンロード
デフォルト設定のままインストール

EclipseにTomcat5.5を設定
1. ウィンドウ > 設定 > ランタイムで検索
2. サーバーのランタイム環境項目を開く
3. 追加ボタンを押下
4. Tomcat5.5を選び、新規ローカル・サーバーの作成にチェック（ここでチェックしなかった場合は手動でTomcat5.5サーバーをワークスペースに追加すること）して次へ
5. TomcatインストールディレクトリにTomcatのインストール先を選ぶ。デフォルトなら

```
C:\Program Files (x86)\Apache Software Foundation\Tomcat 5.5
```
のあたりにあるはずなので、Tomcat5.5ディレクトリを選択
JREは「ワークベンチ・デフォルトJRE」ではなく先程設定したJDK1.5を選択
6. 完了
7. サーバー・ランタイム環境画面でjdk1.5側にチェック

![add_runtime6.PNG](https://qiita-image-store.s3.amazonaws.com/0/129639/c0f50c09-3272-ef6f-0678-6fde8eb03074.png)

こんな感じになっていればok




## Struts公式ダウンロードページからStruts1.3.10をダウンロード

https://struts.apache.org/download.cgi
![download_struts13.PNG](https://qiita-image-store.s3.amazonaws.com/0/129639/7f1ceceb-451b-57a4-1118-881ff092ac55.png)

解凍しておく。

## プロジェクトのインポート
Eclipseを起動
プロジェクトエクスプローラー > インポート > WARファイル
先程解凍したstrutsの

```
struts-1.3.10-all\struts-1.3.10\apps
```
以下のwarファイルを選択する。今回はstruts-examples-1.3.10.warを選ぶが、なんでも動くはず。
ターゲット・ランタイムがApache Tomcat5.5になっていることを確認し、完了
もし自動ビルドを有効にしていない場合は手動でビルドする。

## サーバーを起動し、サイトへアクセス
![add_runtime5.PNG](https://qiita-image-store.s3.amazonaws.com/0/129639/4209620a-db40-8170-8b33-bdc6b7948a09.png)
サーバーを右クリックし、追加および除去から先程インポートしたプロジェクトを追加して完了
サーバーを右クリックして、開始。
コンソールにいろいろ書き込まれるので、いい感じに立ち上がったら下記サイトへアクセス
http://localhost:8080/struts-example-1.3.10/

## ヘルプ
**Q**	
> スーパークラス "javax.servlet.http.HttpServlet" が Java ビルド・パスで見つかりませんでした

エラーがプロジェクト内のファイルで出ている。

**A**	プロジェクトを右クリック > プロパティ > ターゲット・ランタイムからTomcat5.5にチェックが入っているか確認。そもそもターゲットランタイムになければ、「Tomcat5.5のダウンロードとインストール」をやり直す。

---

**Q** サーバーを起動すると、
> ローカルホスト の Tomcat v5.5 サーバー で必要な幾つかのポート (8005, 8082, 8009) がすでに使用中です。サーバーはすでに別のプロセスで稼働中であるか、システム・プロセスがそのポートを使用中である可能性があります。このサーバーを始動するには、他のプロセスを停止するか、ポート番号を変更する必要があります。

エラーが発生する。

**A** 要は既にポートが使われてしまっている現象で、原因はだいたいTomcatを二重起動しているせいである。動かしたいサーバーのプロパティを開いて（サーバービューからダブルクリック）ポート番号を適当に変えてあげるか、既にあるTomcatのプロセスを終了させる。終了させるにはタスクマネージャーからサービスタブを選択し、プロセスを見つけて右クリック→停止させてやればいい。
![kill_tomcat.PNG](https://qiita-image-store.s3.amazonaws.com/0/129639/f877adcd-66be-ac57-a790-58b6a6f82c5a.png)

---

**Q** 
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/129639/ac7e19bd-ceb4-5e54-1c39-aa949e2e622e.png)
Webページにアクセスするとこのようなエラーになる。

**A** Tomcatが立ち上がっていないことが原因のあるある。Tomcatを起動すれば良い。

---
**Q** ![キャプチャ2.PNG](https://qiita-image-store.s3.amazonaws.com/0/129639/3f7c6038-a041-0d0a-3109-19b8fa3520f0.png)
The requested resource is not available.

**A** よくあるのは叩いているURLが間違っているパターン。URLの最後尾にはプロジェクト名がつくので、正しくそれを入力する。またはビルドがちゃんとできていいないプロジェクトをデプロイしてもこの画面になってしまったので、ちゃんとビルドしてからサーバーを起動するといい。

---

**Q** プロジェクト名を変えたい。

**A** プロジェクト名を右クリックして名前をリファクタリングすれば良い。そのときにTomcatのサーブレットライブラリとの関連が立たれてエラーになることがあるが、そのときは **スーパークラス "javax.servlet.http.HttpServlet" が Java ビルド・パスで見つかりませんでした。エラーがプロジェクト内のファイルで出ている。**　のQAを試してみてほしい。

---

**Q** この記事のプロセスを無視して動的webプロジェクトを新規作成して、warファイルを解凍して出てきたWEB-INFをプロジェクト直下においたけど動かない！

**A** 動的Webプロジェクトから新規作成した場合、まずwarファイルを解凍して出てきたものはproject名/WebContens以下に入れないとダメ。古めのサイトだと結構プロジェクト直下に置けとあるが、Oxygenでそれをやると動かなくなることもあるので注意

## あとがき
struts1系の情報がレガシー化しすぎていて色々なところでコケまくってブチ切れたので、なんとか書いてみた。でもこれもすぐにレガシー化してしまうのかもしれない。。。
Struts2が出ていて、しかもその他にSpringやらPlayやら出ている時代にStruts1を使わされるエンジニアが抵抗のためにEclipseOxygenでも動く環境を作るために頑張りました。
質問、指摘、不明点等あればお気軽にコメントを