2012-03-05 38 views
3

Slingバンドルとしてビルドされたアプリケーションをデバッグするのに苦労しています。アプリケーションはほぼ完全にGroovyのコード(Groovy Eclipseプラグインを持っています)、Eclipse(Mavenを使用しています)は.jarを構築していて問題なくSlingにインストールしています。EclipseでリモートJavaアプリケーションのデバッグを使用してGroovyコードをデバッグする方法

ただし、デバッグできません。私はスリングのアプリをデバッグするために必要である集まるリモートデバッグをセットアップする手順に従っている - 具体的には、私は次のコマンドでスリングを起動します。

java -Xdebug -Xnoagent -Djava.io.tmpdir=/c/Users/nickgolding1/temp -Xmx1024m -Xrunjdwp:transport=dt_socket,address=30303,server=y,suspend=n -jar org.apache.sling.launchpad-6-SNAPSHOT-standalone.jar -p 8080 

が...そしてEclipseでデバッグ構成を設定します、私のプロジェクト、接続タイプ "標準(ソケットアタッチ)"、ホストlocalhost、ポート30303を指しているタイプの "リモートJavaアプリケーション"のタイプです。この設定はokを開始するようです - 少なくとも、 t - しかしGroovyコードで設定したブレークポイントは、実際にはSlingアプリへのリクエストの実行を中断しません。

さまざまなフォーラムで、Javaコードに問題がないリモートJavaアプリケーション構成を使用してGroovyコードをデバッグする際に問題が発生していることを示すいくつかの記事を見てきました。残念なことに私のアプリはすべてGroovyでJavaはないので、ここではそのことを確認できません。

感謝しています。

答えて

3

まず、ご提案。あなたのXrunjdwp:transportオプションにsuspend=yを設定してください。これはmainで中断され、問題がデバッグ・オプションやGroovyコードであるかどうかをより良く知ることができます。

今、もっと複雑なものに。はい。リモートGroovyコードのデバッグに関するいくつかの問題があります。 Groovyコードが動的にロードされるときに問題が発生します。この場合、デバッグ名はソース名と一致しないことが多く、デバッガは動的にロードされたクラスファイルを元のソースコードとどのようにマッチさせるかを知りません。

このような問題の1つはここに記述されている(と同様のことが起こる間違いなく他の場所はありません): https://jira.springsource.org/browse/SPR-7113

だから、あなたに私の提案は、可能な場合は、あなたのグルーヴィーコードが前であることを保証しなければならないということですがサーバーに送信される前にコンパイルされます。 (また、suspend=yを設定してください)

+1

ありがとうございました。 'suspend = y'は、デバッグオプションが動作していることを示していました(Eclipseがデバッグを開始してから正常に起動するのを待っていたため)。だから問題はGroovyのようだ。 あなたのプリコンパイルの提案は良いですが、Groovyコードがプリコンパイルされていることは間違いありません。確かに、Mavenのビルド出力は、コンパイルしていると主張しています。 –

+0

また、GroovyソースがEclipseのリモート起動設定のソース参照パスに含まれていることを確認してください。 –

+0

彼らは良い点ではありませんでしたが、今はきちんとしていて、クリーンで再デプロイしてもまだデバッグしていません。 –

関連する問題