ScalaとかHaskellとかの話。あとJavaとか

関数型言語について勉強中です。

Scalatra w/ IntelliJ IDEAでのデバック設定

ScalatraをIntelliJで触り始めました。
デバックするのに少しはまってしまったのでその時のメモ。

Scalatraのプロジェクトを作るのは、本家サイトにあるように必要なツール類をインストールし、
>g8 scalatra/scalatra-sbt
を実行すれば簡単に作れます。
Installation | Scalatra

IntelliJ IDEAを使う場合もplugins.sbtに
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
を追加して、sbt実行後
>gen-idea
を叩けばIntelliJでプロジェクトを開けるようになります。
この後、ここにあるようにすれば大丈夫かと思ったら
IDE Support | Scalatra

こんなエラーが出てポート5005で起動できませんでした。
※ちょっと調べるとWindowsだからっぽいんのですが原因は不明
f:id:amkt922:20140727172821p:plain

How To Debug With Typesafe Activator Play Framework Using Eclipse » Andika Nugraha
このページを参考に、
set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
コマンドプロンプト上でJAVAの実行環境を設定してあげると、sbt実行で
 Listening for transport dt_socket at address: 5005
と5005でListenしてくれるようになります。
f:id:amkt922:20140727174850p:plain

f:id:amkt922:20140727175112p:plain
この後はIDEの設定で、Remoteの実行設定をしてあげれば、実行後
 Connected to the target VM, address: 'localhost:5005', transport: 'socket'
と表示され5005ポートへの接続が確立しました。

これで無事IDE上でのデバックが可能となりました。

参考にしたサイトはPlayとEclipseという内容でしたが、特にIDEフレームワークの違いはなく
SBTを使っていたら同じ対応でできるはずです。