Java: EasyBuggy / EasyBuggy Boot - Eclipseを使って同時に開発・デバッグする

# EasyBuggy / EasyBuggy Bootとは

メモリリーク、デッドロック、JVMクラッシュ、SQLインジェクションなど、バグや脆弱性の動作を理解するためにつくられたバグだらけのWebアプリケーションです。Apache 2.0ライセンスで公開されています。

EasyBuggyは[基本的な技術のみが使われています](https://t246osslab.wordpress.com/2017/03/14/easybuggy-%e3%81%ae%e3%83%88%e3%83%aa%e3%82%bb%e3%83%84/)が、EasyBuggy Bootは[Spring Bootなどの新しい技術が使われています](https://t246osslab.wordpress.com/2017/08/27/easybuggy-boot%E3%81%AE%E3%83%88%E3%83%AA%E3%82%BB%E3%83%84/)。

# やりたいこと

[EasyBuggy](https://github.com/k-tamura/easybuggy/blob/master/README.jp.md)と[EasyBuggy Boot](https://github.com/k-tamura/easybuggy4sb/blob/master/README.jp.md)を同時に実行・デバッグしたい。
具体的には下記のようなことを実現したい。

- 伝統的なJavaのコードとSpring Frameworkに則ったコードを比較したい
- それぞれのコードにおける脆弱性の修正を試みたい
- それぞれの環境の切り替えのコストを下げたい

# インストール

## 前提条件

Eclipseがインストールされていること。

また、GitとMavenがインストールされ、パスが通っていること。
下記のコマンドを実行することで確認が可能。

```
$ git --version
$ mvn -version
```

## Eclipseプロジェクトの作成

```shell:EasyBuggy
$ git clone https://github.com/k-tamura/easybuggy.git
```

```shell:EasyBuggy&nbsp;Boot
$ git clone https://github.com/k-tamura/easybuggy4sb.git
```

## Eclipseへのインポート

1. `File > Import` を選択する
1. `Maven > Existing Maven Projects` を選択し、Import Maven Projectsダイアログを表示する
1. `Select root directory` に先ほどcloneしたフォルダ2つを選択する
1. `Finish` ボタンを押す

![スクリーンショット 2021-09-21 094505.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3571/17a43856-0cfe-340c-d2bd-54004cac953b.png)

## EasyBuggyの独自設定

### Serverを追加

1. Serversビューを開き、右クリック。 `New > Server` を選択する
1. Tomcat v8.5 Server(他のバージョンでも良いと思う)を選択し、`Next`ボタンを押す
1. Available から `easybuggy` を選択する。`Add` ボタンを押して Configured に移動させる
1. `Finish` ボタンを押す

### ポートを変更

そのままでは、EasyBuggy Bootと利用しているポートが衝突するため、ポートを変更する。

1. 追加されたサーバーをダブルクリックし、Overviewビューを表示する
1. Portsタブ以下のPort Name:`HTTP/1.1`のPort Numberを任意の値に書き換える(例: 9080)

![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3571/5341bd9e-9e4d-7d69-7337-838d2f0e8f4e.png)

EasyBuggy Boot側のポートを変更するよりも、EasyBuggy側のポートを変更するほうが手軽だと思われる。
EasyBuggy Boot側のポートを変更する場合は、`src/main/resources`以下の`application.properties`を書き換える。

### パスを変更

EasyBuggy内の一部のページは、パスを `/` (サーバールートパス)に設定しないと正常に動作しない。

1. 追加されたサーバーをダブルクリックし、Overviewビューを表示する
1. 下部の `Modules` を選択する
1. Document Baseが `easybuggy` の行を選択する
1. `Edit...` ボタンを押す
1. `Edit Web Module` ダイアログにて、Pathを`/`に変更する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3571/1e09bb22-ec14-c29a-4c0d-eee8170b06ab.png)


# 起動

### EasyBuggy

Serversビュー内から追加されたサーバーを選択し、同ビュー内の`Start the server in debug mode`ボタンを押す。
その後、下記にアクセスする。

http://localhost:9080/


### EasyBuggy Boot

Package Explorerから`Easybuggy4sbApplication.java`を選択し、Eclipseのツールバーの`Debug Easybuggy4sbApplication`ボタンを押す。
その後、下記にアクセスする。

http://localhost:8080/

# まとめ

おつかれさまでした。

![4aa67b63-a855-f17d-ff55-678187092f02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3571/45dd789f-9c4c-c13b-1767-a6c7eb8d92a1.png)

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

## EasyBuggy / EasyBuggy Bootの起動に失敗する場合

一度 `mvn verify` コマンドを実行することで、直ることがあります。

コマンドを実行した結果、下記のようなエラーで失敗することもあります。
しかし、これを無視して起動すると、成功することもあります。

```
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
```

# 関連記事

https://qiita.com/tamura__246/items/7275c7406706fb0057e8

https://qiita.com/tamura__246/items/c8229d68ef199890827b

https://qiita.com/flyaway/items/709f2e8e2372209c68d8