さてさて、前々回、前回と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 に接続すると、ちゃんと応答が帰ってきます。やったぁ。
さて、次の課題はデバッグです。
デフォルトでは、デバッグの緑の虫アイコンさえ、灰色になってます。
虫さん…死んでる…。
以下、デバッグできるようにする手順です。
①
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ブラウザで接続してみます。
すると、設定してあったブレークポイントで止まりました!やったね⊂(^-^)⊃