EclipseでGlassFish5.1を動かす(Eclipse2019-12対応)

## 環境
* Windows 10
* Pleiades All in One(Eclipse 2019-12)

## ゴール
EclipseでGlassFishを起動し、ブラウザで[localhost:8080](http://localhost8080)にアクセスすると以下の画面が表示されること
![glassfish2-11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/7a3c2734-01e8-5db2-6318-8364d0de6199.png)

## 手順
### 1. 必要なソフトのインストール
#### 1-1. Pleiades All in One
[MergeDoc Project](https://mergedoc.osdn.jp/)にアクセスします。
[Eclipse 2019-12]を選択し、[Windows 64bit]の[Java]の[Full Edition]を選択します。
![pleiades1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/9aa87e03-6498-6efd-90ac-c4d10b8c3a7b.png)
ダウンロード場所を選ばせる画面が出るので、任意の場所にダウンロードします。
1.5GBと重たいので、ゆっくり待ちましょう。

#### 1-2. 7-Zip
ダウンロードしたzipファイルを展開します。
しかしファイルパス名が256文字を超えるとWindows標準の機能では展開できないので、7-Zipを使います。

[7-Zip](https://sevenzip.osdn.jp/)にアクセスします。
安定版(2020/01/02現在：7-Zip 19.00)を任意の場所にダウンロードします。
![7zip1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/e9b16993-7850-a1fd-549d-f4c216b0e994.png)

ダウンロードしたexeを起動すると、以下のようにインストールしたい場所を尋ねられるので、任意の場所を指定します。
![7zip2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/44532fb6-0828-f5a0-e86e-e82622ac520a.png)

pleiadesのzipをダウンロードしたフォルダにアクセスし、右クリック -> [7-Zip] -> [展開...]
以下の画面が表示されるので、pleiadesの展開先を指定します。
ここでは、`D:\pleiades201912`としています。
![7zip3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/e3460617-e1cb-ae8f-ebad-cce7a69113b3.png)
[OK]を押してzipファイルを展開します。少々時間がかかります。

展開先に`pleiades-2019-12-java-win-64bit-jre_20191225`というフォルダができていることを確認します。
![7zip4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/4f4c5328-b8f1-a060-2a51-9b294fa6f922.png)

[pleiades-2019-12-java-win-64bit-jre_20191225] -> [pleiades] -> [eclipse] -> [eclipse.exe]とクリックし、eclipseを起動します。
ワークスぺースの場所を聞かれますが、デフォルトの`../workspace`で問題ありません。


#### 1-3. Sapphire
GlassFishサーバをEclipseで使えるようにするためにSapphireが必要なので、まずはSapphireからインストールします。

Eclipseの画面で、[ヘルプ] -> [新規ソフトウェアのインストール...]の順に選択します。
[作業対象]に「http://download.eclipse.org/sapphire/9.1.1/repository/ 」と入力し、[追加]を押します。
[名前]に任意の値を入れます。私は「Sapphire」と入れておきました。
[追加]を押すと以下のように[Sapphire]が追加されるので、チェックボックスにチェックを入れます。
![sapphire1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/4293db03-1c7a-f740-fe1e-93c55282be13.png)
[次へ] -> [次へ]の順にクリックします。
以下のような画面が出るので、[使用条件の条項に同意します]にチェックを入れます。
![sapphire2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/d2d1e795-cd41-fdad-1272-1186737ee4e5.png)

[完了]を押します。
ソフトウェアのインストールが完了すると、再起動を求められるので、[今すぐ再起動]を押します。
![sapphire3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/ccf69847-7a5d-a39b-611b-18d6cc2cf72d.png)


#### 1-4. GlassFish Tools

再起動が完了したら、続いてeclipseでGlassFish Toolsをインストールします。
Sapphireの時と同じ要領で、[ヘルプ] -> [新規ソフトウェアのインストール]を選択します。
[作業対象]に「http://download.eclipse.org/glassfish-tools/1.0.1/repository/ 」を入れ、[追加]を押します。
[名前]には任意名を入力します。私は「GlassFish」と入れておきました。

![glassfish2-1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/418f8b3a-7d5c-07e7-679a-0571ccf66b3f.png)


[Eclipse GlassFish Tools]にチェックを入れて[次へ] -> [次へ]
[使用条件の条項に同意します]にチェックを入れて、[完了]を押します。

このとき、以下のように「自動更新ダウンロードに問題が発生しました」というエラーが出ることがあります。
![glassfish2-2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/ad1e1873-4e24-fd69-9224-6ff4228b4a26.png)

原因は不明ですが、作業に悪影響は出ないため放置して問題ありません。
もし原因がわかる方がいらっしゃれば、情報を提供していただけると幸いです。

#### 1-5. GlassFish
EclipseでGlassFishを扱えるようになったので、GlassFishサーバをインストールします。

GlassFishのインストール先となるフォルダを作ります。
どこでもいいのですが、pleiadesの下に置いた方が分かりやすいので、`pleiades-2019-12-java-win-64bit-jre_20191225\pleiades`の中に`glassfish`というフォルダを作成しました。
GlassFishと同じAPサーバであるtomcatを管理しているフォルダが同一階層にあります。

![glassfish5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/1d674d3b-0c6f-2157-b64a-c8e22d0f4fa6.png)

[Eclipse GlassFish](https://projects.eclipse.org/projects/ee4j.glassfish/downloads)にアクセスし、[Eclipse GlassFish 5.1.0, Full Profile]を選択します。
[Download]を選択し、zipファイルを任意の場所に保存します。
保存したzipファイルを`pleiades-2019-12-java-win-64bit-jre_20191225\pleiades\glassfish`に展開します。


### 2. サーバの設定
#### 2-1. Eclipseの起動設定
**起動設定を変更する前に、Eclipseを終了しておいてください。**

GlassFishを起動するためには、Eclipseを動かすVMのバージョンが8である必要があります。(参考：https://github.com/cypher256/pleiades.io/issues/26 )
Eclipseの起動設定を変更します。
`pleiades-2019-12-java-win-64bit-jre_20191225\pleiades\eclipse\eclipse.ini`(以下、`eclipse.ini`)を編集します。

**※設定をもとに戻せるよう、必ず編集前に`eclipse.ini`をコピーして保存しておいてください。**

編集内容は、 `-vm` の次の行を `jre/bin/server` ではなく、pleiades内のjre8の実行ファイルに変更するだけです。


編集前

``` eclipse.ini
-vm
jre/bin/server
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-Dosgi.dataAreaRequiresExplicitInit=true
-Xverify:none
-javaagent:dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
-javaagent:lombok.jar
```

編集後

``` eclipse.ini
-vm
D:\pleiades201912\pleiades-2019-12-java-win-64bit-jre_20191225\pleiades\java\8\bin\javaw.exe
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-Dosgi.dataAreaRequiresExplicitInit=true
-Xverify:none
-javaagent:dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
-javaagent:lombok.jar
```

Eclipseを起動し、[ヘルプ] -> [Eclipse IDE について] -> [インストール詳細]をクリックします。
[構成]タブを開き、`-vm` の次の行の設定が自分で設定した値になっていることを確認します。
![eclipse_ini2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/880529f6-f9eb-d0b8-b19f-7c6c10cc2600.png)

以上で起動VMを変更したことを確認できました。
[Eclipse IDEについて]ウィンドウを閉じます。


#### 2-2. ランタイム環境の設定

Eclipseで、[ウィンドウ] -> [設定] -> [サーバー] -> [ランタイム環境] -> [追加] の順に選択します。
以下の画面が表示されます。
![glassfish2-12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/65bafb4b-bf4a-1a47-4372-ec7f734171d7.png)

[GlassFish] -> [次へ] の順に選択します。

GlassFishとJavaの場所を聞かれるので、表のように設定します。
![glassfish2-7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/e9e13ebb-5c1d-11d9-eb35-0cf313eea1a0.png)

|項目|値|説明|
|---|---|---|
|名前|GlassFish 5|サーバの名前(任意)|
|GlassFish ロケーション|`pleiades\glassfish\glassfish5`|GlassFishサーバのbinフォルダを含んでいるフォルダ|
|Java ロケーション|`pleiades\java\8`|java バージョン8のbinフォルダを含んでいるフォルダ|


[完了]を押します。

以下のように、GlassFishサーバが追加されていることを確認します。
![glassfish2-13.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/34366620-5d2b-706a-dba0-368089f12516.png)

以上でランタイム環境の設定ができました。


### 3. サーバの起動


ます、サーバービューを開きます。Eclipseで、
[ウィンドウ] -> [ビューの表示] -> [その他] -> [サーバー] の順にクリックします。
![view1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/fb54b8b1-41f8-67d7-30bb-4fa6b9c162d9.png)

 [サーバー] -> [開く]を選択します。
すると、以下のように[サーバー]タブが表示されるようになります。
![view2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/f0609073-c429-257d-393c-0ee7e5513042.png)

[使用可能なサーバーがありません...]をクリックし、[サーバーのタイプを選択]で[GlassFish]を選択します。

![glassfish2-8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/29463b0a-3060-5064-17b4-d2e6d06e0bc0.png)

[次へ]を選択します。

[管理者名]にadminを、[デバッグ・ポート]に8009を設定します。(グレーで薄く書かれている内容をそのまま入力します。)
![glassfish2-9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/c0de92ad-f0e5-69c2-20f0-3f07914ea85c.png)

[完了]を押します。

[サーバー]タブに[GlassFish 5]という名前のサーバが追加されていることを確認します。
![glassfish2-10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/0aeb8498-f4c0-f565-e55e-6fa02a6022ca.png)


[サーバー]タブの[GlassFish 5]を右クリック -> [開始] を押します。
[localhost:8080](http://localhost:8080 )にアクセスします。

以下の画面が表示されることを確認します。
![glassfish2-11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199887/5acf60eb-149a-cc55-3694-79e2e6f9a36c.png)

以上の画面が表示されれば、GlassFishサーバの起動ができています！



以上で、EclipseでGlassFishサーバを起動する手順は終了です。
長らくお疲れ様でした。

ここまで読んでくださってありがとうございます。


## 参考
* [Eclipse4.8(Photon)へのGlassFish Toolsのインストール](https://ittoybox.com/archives/677)
* [Plediaes All in One Eclipse 2019-06でGlassFish toolsプラグインからGrassFishサーバ起動でエラー発生](https://github.com/cypher256/pleiades.io/issues/26)
* [Eclipse 起動時に使用する Java VM を指定する](https://www.hitachi.co.jp/Prod/comp/soft1/cosminexus/useful/tips/090601_specify-eclipse-javavm.html)
* [Eclipseを動かしているJava VMを確認する方法](https://itsakura.com/eclipse-javavm)

## 追記
2020/01/13
先人の記事：[Eclipse 2019-06にGlassfish Toolsをインストールする](https://qiita.com/sasetsu/items/cad9f776d8160d1ae54b)
これを見てればもっと早くSapphireにたどり着けていたのに、どうしてググって引っかからなかった...