web-dev-qa-db-ja.com

アクティベーターを使用してPlayアプリケーションをデバッグする方法は?

従来のPlayフレームワークの場合、play debug ~runであることを知っています。 activator debug ~runを実行しようとしましたが、次のエラーが表示されます。

[error] Not a valid command: debug (similar: idea)
[error] Not a valid project ID: debug
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: debug (similar: debianSign, node)
[error] debug
[error]      ^

私は何を間違えていますか?

30
abourg28

単にactivator ~run、次に、次を使用してJVMデバッグポートオプションを渡すことができるはずです。

./activator -jvm-debug <port> ~run

これはplay-runと同じことをしない場合がありますが、コマンドラインに追加する引数は次のとおりです。

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<port>

から: https://github.com/typesafehub/activator/blob/master/dist/src/templates/activator#L107

IDEでこのプロセスに正常にアタッチしました。

Windowsで実行している場合、自動構成は少し異なります。最新のアクティベーターを使用すると、次のことができます。

  1. 開いた %UserProfile%\.activator\activatorconfig.txt(UserProfileはWindowsのインストールによって異なります。私のプロファイルはC:\Documents and Settings\jsuereth 1つのインストールでC:\Users\jsuereth別の)。ファイル内で次を過ぎます:-Xdebug-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<PUT YOUR PORT HERE>
  2. アクティベーターを開始する前に、コマンドラインでJava_OPTSプロパティを設定できます。 set "Java_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<port>"

お役に立てば幸いです!

58
jsuereth

Play framework 2.xの場合:

プロジェクトディレクトリ内で、次のようなアクティベーターコマンドを実行します。

アクティベーター-jvm-debug 9999実行

これが完了したら、プロジェクトをリモートとしてデバッグしますJava IDE内のアプリケーションはアクティベータープロセスでフックします。

これが完了すると、どこでもコードを解読できるようになります。 :)

4
user1242321

私が発見した別のこと:

fork in run := false

fork in Test := false

「build.sbt」にあります。

これにより、アプリケーション自体だけでなく、テストをデバッグできます。

4
user3791111

Windows7とアクティベーター1.2.12がありますが、上記の答えはうまくいきませんでした。代わりに、プロジェクトホームフォルダーの「activator.bat」コマンドの「-jvm-debug」オプションを使用しましたが、機能しました。このような:

C:\ Projects\MyProject> activator -jvm-debug 
トランスポートdt_socketをアドレス:9999 
 [info] C:\ Users\MyAccount\.sbt\0.13\pluginsからグローバルプラグインをロードする
 [info] C:\ Projects\MyProject\project 
 [info]からプロジェクト定義を読み込みます。現在のプロジェクトをMyProjectに設定します(ビルドファイル:/ C:/ Projects/MyProject /)

次に、アクティベーター(sbt)内で、「実行」コマンドを使用しました。このような:

[MyProject] $ run 
 
 ---(アプリケーションの実行、自動リロードが有効になっています)--- 
 
 [info] play-HTTPのリッスンon /0:0:0:0:0:0:0:0:9000
'force 'enabled 
 
(サーバーが起動しました。Ctrl+ Dを使用して停止してくださいコンソールに戻る...)
 
「監視」タスクの実行

Eclipseからデバッグするには、プロジェクトを右クリックして、「Debug As、Debug Configurations」を選択します。 [デバッグ構成]ダイアログで、[リモートJavaアプリケーション]を右クリックして[新規]を選択します。ポートを9999に変更して[適用]をクリックします。これから[デバッグ]をクリックします。実行中のアプリケーションに接続します。

4
Readren

Readrenのソリューションを試しましたが、Eclipseの代わりにIntelliJ IDEA Community Edition(組み込みのPlayサポートなし)を使用しました。

これは基本的に、新しいTypesafe Activatorを使用するためのドキュメント化方法です(1.3.2を使用しています)。私にとってアプリケーションは実行され、IntelliJデバッガーは接続しているように見えましたが、ブレークポイントにヒットしませんでした(また、IntelliJのブレークポイントにはヒットしないことを示す目盛りがありませんでした)。

Activate.batファイルのDEBUG_OPTSセットアップを変更して、jdwpコマンドライン引数の-agentlib形式を使用しようとしましたが、これで修正されたようです。

rem set DEBUG_OPTS=-Xdebug -Xrunjdwp:tnsport=dt_socket,server=y,suspend=n,address=!JPDA_PORT!
set DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999

おそらく、activatorconfig.txtのどこかにこれを配置する必要がありますが、これを機能させるために約4時間を費やしたので、これで十分です...

重要な場合に備えて、次のJVMを使用しています。

Javaバージョン "1.7.0_75" Java(TM)SEランタイム環境(ビルド1.7.0_75-b13)Java HotSpot(TM)64ビットサーバーVM (ビルド24.75-b04、混合モード)

0
Martin Bayly