2012-02-09 16 views
2

実行可能なjarを作成し、別のjavaプログラムのプロセスビルダーを使用して実行しました。ProcessBuilderデバッグ

public class SomeClass { 
public static void main(String[] args) { 
    Process p = null; 
    ProcessBuilder pb = new ProcessBuilder("java", "-jar", "src.jar"); 
    pb.directory(new File("/Users/vivek/servers/azkaban-0.10/TestApp/src")); 
    try { 
     p = pb.start(); 
    } catch(Exception ex) { 
     ex.printStackTrace(); 
    } 
} 

}

私は今日食からあるsrc.jarをデバッグしようとしている - ここに私のコードです。私はデバッグ設定でプロジェクトsrcを外部プロジェクトとして提供しましたが、私のブレークポイントには決してヒットしません。このようなものに対してデバッグ環境を設定する方法はありますか?

+0

私はあなたが正しく理解しているかどうかを見てみましょう。上記のSomeClassコードをEclipse内から呼び出していて、OSによって提供される別のJVMでEclipse外で呼び出されるjarファイルでJavaソースをデバッグしたいのですか?私はあなたのためにこの終わりをよく見ない。私はあなたがよくsrcで保持されているJavaコードにロギングコードを追加することがあります考えています。 –

+0

私はとても遅く応答して申し訳ありません!私は問題を整理することができた。新しいProcessBuilderを作成するときは、コマンドにXdebugオプションを追加し、接続先のポートを指定するだけです。次に、eclipseでデバッグ設定を作成し、そのポートに接続してデバッグします。 –

答えて

4

わかりましたので、私はこれを動作させることができました。残念ながら、私はこれに使用したサンプルプロジェクトを見つけることができませんので、できる限りのことを説明しようとします。 上からこの行を考えてみましょう -

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "src.jar"); 

私が行うために必要なすべてがこのパラメータとしてはXdebugを追加しました -

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005", "src.jar"); 

それから私は、Eclipseでのデバッグ環境を作成し、5005としてポートを設定し、 jarのソースコードにいくつかのブレークポイントを設定すればうまくいきました。

+0

Eclipseでこれを設定しようとしている人は、次の[例](http://www.ibm.com/developerworks/opensource/library/os-eclipse-javadebug/)を参考にしてください。 – Felix

0

Eclipseでのデバッグのjarパッケージの方法:

  1. は、プロジェクトの参照先libにjarファイルを選択します。
  2. Javaソースの添付ファイルでは、ソースコードの場所を指定できます。
  3. プロジェクトからいくつかのクラスのjarファイルを呼び出します。
  4. ブレークポイントを追加し、プロジェクトをデバッグします。

この場合、jarファイルとプロジェクトは同じプロセスで実行されています。

ProcessBuilderでjarファイルを実行すると、jarファイルはプロジェクトとは独立した別のプロセス、つまりeclipseとは独立したプロセスで実行されています。すなわち、jarファイルは 'java -jar jarfile 'をコマンドラインに入力します。

+0

あなたの最後のメモは私が以前に作ったコメントに一致します。繰り返しますが、私は彼の最善の策は、この方法をデバッグしようとするのを忘れて、代わりにログを使ってプログラムの状態を取得することだと思います。 –

関連する問題