Scala ScalatraをIntelliJを使って開発&デバッグする Windows10

さてさて、前々回前回とsbtのScalaプロジェクトをIntelliJで開発するためにてこずっていたワタクシですが、やっと真打ち登場!です。

もともとやりたかったことは、Scalatraで作られたプロジェクトをIntelliJでデバッグとかしながらオシャレに開発していきたかったのです。

ScalatraはScalaのフレームワークです。今回は、バージョン2.6.5です。

環境は、Windows10 + IntelliJ コミュニティバージョン2020.1 です。

Scala IntelliJ sbtでビルドするプロジェクトをインポートする

で説明したように、プロジェクトをインポートします。

この後、sbt tool windowとかsbt shellのウィンドウがなければ、sbtでビルドすいるプロジェクトだと認識されていませんので、やりなおしましょう…。

Buildに失敗したというメッセージが出ます。

Extracting structure failed
(Global / dumpStructureTo) java.io.FileNotFoundException: C:\Users

気にしたほうがいいのかもしれませんが、支障は今のところないので、気にせず続行します。

デフォルトではsbtでビルドできるようになってないので、下記でも紹介しているように、

File→Setting→Build, Excution…→Build Tools→sbtの画面で

Use sbt shellとあるところのチェックボックスを二つチェックします。

sbt shellのウィンドウで、

jetty:start

と打ち込みます。いろいろ、バーっと表示が出ますが、

2020-07-31 16:55:08.612:INFO:oejs.Server:main: Started @2375ms

と出て、Jetty Webサーバーがちゃんと動作したっぽいです!!
ブラウザなどで localhost:8080 に接続すると、ちゃんと応答が帰ってきます。やったぁ。

さて、次の課題はデバッグです。

デフォルトでは、デバッグの緑の虫アイコンさえ、灰色になってます。

虫さん…死んでる…。

このままではデバッグできませんので、下記を見てやります。

https://scalatra.org/getting-started/ide-support.html

上記と同じ内容ですが、解説も加えて下記に書いておきます。

Run → Edit configurations 

として、Remoteというのを選んで

Attach to remote JVM

というのが選択されているのを確認して、OKをクリックします。

ちなみに、ここでJVMに下記のオプションをつけて実行することになっています。
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

おまじないみたいですが、この内容が知りたければ、下記サイトに書いてあります。

https://docs.oracle.com/javase/1.5.0/docs/guide/jpda/conninv.html

虫のアイコンが緑に光り輝きますが、まだここでは押さないでください。


build.sbt に次のオプションを足します。

javaOptions ++= Seq(
"-Xdebug",
"-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
}


これで、もう一度ビルドします。jetty:start ってやって、緑の虫さんのデバッグアイコンをクリックします。

注意事項ですが、 jetty:start ってやって から、デバッグしないとできません。

5005番のポートを使う、JVMのプロセスにアタッチしてデバッグするからからなので、JVMが立ち上がってないとデバッグできないのです。

Debug ウィンドウに

Connected to the target VM, address: 'localhost:5005', transport: 'socket

って表示されたら、とりあえずデバッグが接続できています。

localhost:8080 にWebブラウザで接続してみます。

すると、設定してあったブレークポイントで止まりました!やったね⊂(^-^)⊃


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です