Play Framework 2.5 (Java) の開発環境をEclipseで構築：Windows編

Windowsに、Play Framework 2.5 (Java)の開発環境をEclipseで構築します。
※Macはこちら ⇒ [Play Framework 2.5 (Java) の開発環境をEclipseで構築：Mac編 - Qiita](http://qiita.com/yamakz5555/items/0391a9f384a248ebea2d)

# 環境

- Windows 10
- Play 2.5.10
- JDK 1.8.0
- Eclipse 4.6 Neon (Pleiades All in OneのJavaパッケージ)

# 事前準備
事前に以下の設定をしておく。

- JDK 1.8のインストール
- Eclipse 4.6 (Pleiades All in OneのJavaパッケージ)
    - [Pleiades - 統合開発環境 Eclipse 日本語化プラグイン](http://mergedoc.osdn.jp)

# Typesafe Activatorのインストール

Lightbend社のページから、Typesafe Activatorをダウンロードする。
https://www.lightbend.com/activator/download

![ダウンロード.png](https://qiita-image-store.s3.amazonaws.com/0/157243/04bd5ea7-e13c-f152-3cbd-b9bee1eccde0.png)

ダウンロード後、解凍して任意のフォルダに配置する。
（例：C:¥develop¥typesafe-activator）

activator.batのパスをシステム環境変数Pathに追加する。
（例：C:¥develop¥typesafe-activator¥activator-dist-1.3.12¥bin）


コマンドプロンプトを起動し、下記コマンドでパスが通っているかを確認する。

```
$ activator
ACTIVATOR_HOME=C:¥develop¥typesafe-activator¥activator-dist-1.3.12
ファイル C:¥develop¥typesafe-activator¥activator-dist-1.3.12¥bin¥..¥cone¥sbtconfig.txt が見つかりません。
...
```

# 新規プロジェクトの作成

activatorを使用してプロジェクトを作成する。

カレントディレクトリにディレクトリが作成されるため、任意のディレクトリに移動した後、`activator new`コマンドを実行する。

```
$ activator new
```

使用するテンプレートの入力が求められるため、```5) play-java```を選択する。

```
Fetching the latest list of templates...

Browse the list of templates: http://lightbend.com/activator/templates
Choose from these featured templates or enter a template name:
  1) minimal-akka-java-seed
  2) minimal-akka-scala-seed
  3) minimal-java
  4) minimal-scala
  5) play-java
  6) play-scala
(hit tab to see a list of all templates)
> 5
```

プロジェクト名の入力が求められるため、任意の名前（例：`HelloWorld`）を入力する。

```
Enter a name for your application (just press enter for 'play-java')
> HelloWorld
```

コマンド終了後、カレントディレクトリにプロジェクトが作成されていることを確認する。

```
$ dir /B
HelloWorld

$ dir /B HelloWorld
.gitignore
app
bin
build.sbt
conf
libexec
LICENSE
project
public
README
test
```

# Eclipseへの取り込み設定

プロジェクトをEclipseに取り込めるよう設定する。

`project/plugins.sbt`をテキストエディタで開き、末尾に以下を追加する。

```project/plugins.sbt
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")
```

`build.sbt`をテキストエディタで開き、末尾に以下を追加する。

```build.sbt
EclipseKeys.preTasks := Seq(compile in Compile)
EclipseKeys.projectFlavor := EclipseProjectFlavor.Java
EclipseKeys.createSrc := EclipseCreateSrc.ValueSet(EclipseCreateSrc.ManagedClasses, EclipseCreateSrc.ManagedResources)
```

プロジェクトディレクトリ内でcomplieとeclipseコマンドを実行する。

```
$ cd HelloWorld
$ activator compile
$ activator eclipse
```


# Eclipseへの取り込む

Eclipseを起動し、ファイル＞インポート＞一般＞既定のプロジェクトをワークスペースへ にて作成したプロジェクトを取り込む。
取り込み後、エラーが出ていないことを確認する。

# 実行

1. 実行＞外部ツール＞外部ツールの構成
2. プログラムを選択し、右クリック＞新規
3. 以下のように設定する。
    - 名前：activator run
    - ロケーション：C:\Windows\System32\cmd.exe
    - 作業ディレクトリ：${project_loc}
    - 引数：/c start activator "run 9000"

![runキャプチャ.png](https://qiita-image-store.s3.amazonaws.com/0/157243/23fea7a0-7fcc-ffcd-9acf-007042d90ecb.png)
4. 適用、閉じる
5. パッケージ・エクスプローラーでプロジェクトを選択する。
6. 'activator run'実行する。
7. 起動後、 http://localhost:9000 にアクセスする。


# 実行停止

1. コマンドプロンプト上でCtrl+Dで終了する。
2. コマンドプロンプトを閉じる。

# デバッグ実行
## activator 起動

1. 実行＞外部ツール＞外部ツールの構成
2. プログラムを選択し、右クリック＞新規
3. 以下のように設定する。
    - 名前：activator debug
    - ロケーション：C:\Windows\System32\cmd.exe
    - 作業ディレクトリ：${project_loc}
    - 引数：/c start activator -jvm-debug 9999 "run 9000"
4. 適用、閉じる
5. パッケージ・エクスプローラーでプロジェクトを選択する。
6. 'activator debug'を実行する。
7. 起動後、 http://localhost:9000 にアクセスする。

## Eclipseのデバッグ起動
1. 実行＞デバッグの構成
2. リモートJavaアプリケーションを選択し、右クリック＞新規
3. 以下のように設定する。
    - プロジェクト：HelloWorld
    - 接続プロパティ：localhost
    - ポート：9999
4. デバッグ
5. 任意箇所（HomeController#indexなど）にブレイクポイントを設定し、デバッグできることを確認する。


# トラブルシューティング

activator run時、以下のエラーが発生する。

```
‘activator runの起動’ に問題が発生しました。変数が空の選択を参照しています: ${project_loc}
```

パッケージ・エクスプローラーでプロジェクトを選択できていないかアクティブでないため。
パッケージ・エクスプローラーでプロジェクトを再選択する。

---

NettyServer が起動しない。

```
[error] p.c.s.NettyServer - Failed to listen for HTTP on /0.0.0.0:9000!
[error] (compile:run) play.runsupport.ServerStartException
```

Eclipse（もしくはそれ以外のソフトウェア）が9000番ポートを使用していると、正常に起動しない。
PleiadesのUltimateを使用した際に発生。（PHP用モジュールが既に使用している）

起動時パラメータを、9000番ポート以外に変更する。

---

sbtconfig.txtが見つからないというエラーが発生する。

```
ファイル C:\develop\typesafe-activator\activator-dist-1.3.12\bin\..\conf\sbtconfig.txt が見つかりません。
```

気にしなくてよいが、該当箇所に空ファイルと作ると表示されなくなる。
（例：C:\develop\typesafe-activator\activator-dist-1.3.12\conf\sbtconfig.txt）