2017-03-10 20 views
5

Gradleビルドツールを使用してVert.Xフレームワークを使用してプロジェクトを開発しています。私が持っている問題は、IntelliJのブレークポイントは、私が試した方法ではうまくいきません。ここでIntellij IDEAデバッガがGradle Vert.Xプロジェクトで動作していません

私はGradleのに使うVert.Xの実行コンフィギュレーションです:

run { 
    args = [ 
      'run', mainVerticleName, 
      "-conf", confPath, 
      "--redeploy=$project.ext.watchForChange", 
      "--launcher-class=$mainClassName", 
      "--on-redeploy=$project.ext.doOnChange" 
    ] 
} 

ので、展開がGradleを使用して行われ、IntelliJデバッガが接続されて、何の問題もなく動作しますが、ブレークポイントはに動作していません。

私はそれを動作させるために試みた方法:

1)のGradleの実行構成。ここでIntellij IDEAの実行コンフィギュレーションです: Intellij Run Configuration using Gradle

、リモートデバッグツールを使用しようとした次のVMオプションを使用してアプリケーションを開始しました:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

しかし、これは動作しませんでした。

2)アプリケーションの設定:

Error: Could not find or load main class io.vertx.core.Launcher

Vert.X Coreライブラリがである。この場合 IntelliJ Run Configuration using Application

私は起動時に以下のメッセージが出ますように私はちょうどプロジェクトを開始することはできませんクラスパスと構成が正しいと思われるので、問題はありませんでした。

プロジェクトのソースコードは公開されているとGitHubで見つけることができます:

vertx-gradle-architecture-starter

Vert.Xバージョン - 3.4.0。 Gradleバージョン - 3.4.1。 IntelliJ IDEAバージョン - 2016.3.5。 OS - MacOS Sierra 10.12.3。

私は、テスト - ブレークポイントからのVert.Xのデプロイ時に興味深い事実が働いています。 上記のケースでブレークポイントが機能しない理由はありますか?

+0

少なくとも2番目のオプションは間違いなく機能するはずです。使用しているVert.xのバージョンは?おそらく 'io.vertx.core.Launcher'を持たない古いバージョンでしょうか? – MirceaG

+0

「io.vertx.core.Launcher」です(スクリーンショット参照)。このコンフィグレーションの起動時に「エラー:メインクラスio.vertx.core.Launcherを見つけられないかロードできませんでした。」というメッセージが表示されるので、デバッガをイベントでチェックすることはできません。私は私の依存関係に 'vertx-core'を持っています。 –

+0

申し訳ありませんが、あなたが3.4.0を使用していると指定していませんでした。あなたのGitHubプロジェクトを手に入れ、スクリーンショットから設定をローカルに試しました。できます! Intellijでプロジェクトをクリーニング/再構築してください。 – MirceaG

答えて

5

ここに両方の​​問題の解決策があります。 @CrazyCoderに助けてくれてありがとう。

1)runコマンドは別のVMで実行されます。だから、それを動作させるために、私はスクリプトに--java-opts引数を追加しました:

run { 
    args = [ 
      'run', mainVerticleName, 
      "-conf", confPath, 
      "--redeploy=$project.ext.watchForChange", 
      "--launcher-class=$mainClassName", 
      "--on-redeploy=$project.ext.doOnChange", 
      // used for attaching remote debugger 
      "--java-opts", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000" 
    ] 
} 

これは、ポート8000Remote debugの構成を添付することができます。

2)デフォルトでは、Intellij IDEAはソースセットごとに別々のモジュールを作成するので、api_mainapi_testモジュールのソースセットがありました。この機能をオフにした後、アプリケーションのデバッグの実行が開始されました。

これは、Gradle Settingsでオフにすることができます。 Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle:ソースセットごとに別々のモジュールを作成するのチェックを外します。

enter image description here

これはIntelliJ IDEA問題です - reference

+0

"ソースルートごとに別々のモジュールを作成"せずに、src/main(src/integrationTestなど)以上のものがある場合、IntelliJはそのモジュールの設定を知らない(クラスパスなど) – kboom

+0

この仕事はKotlinでも可能ですか? – Ville

0

私はまったく同じ問題を抱えていて、私のために働いていました。 intelliJでは、再デプロイメント、ランチャー、および再デプロイメントのオプションは必要ありません。これらを削除すると、アプリケーションの起動後にデバッグが機能します。

run { 
    args = [ 
     'run', mainVerticleName, 
     "-conf", confPath 
    ] 
} 
関連する問題