web-dev-qa-db-ja.com

実行時にjarをデバッグするにはどうすればよいですか?

私はかなり奇妙な立場にいます(私のJava初心者の観点から):

  1. eclipseを使用して、基本的にテキスト(* .csv)ファイルを(バッチで)読み取り、その内容を "評価"し、結果を* _out.csvテキストファイルに書き出す「Javaプログラム」(クラスを含む.Javaファイル)を作成しました。入力ファイルを見つけるために、「ファイル選択」を使用します(ここからサンプルを入手しました: http://docs.Oracle.com/javase/tutorial/uiswing/components/filechooser.html

  2. すべてのコードをデバッグし、デバッガーを使用して動作します

  3. 私はコード(他のすべてを順番に呼び出すメインクラス)を実行し、それは動作しますEclipse

  4. プロジェクトのすべてのコンテンツを「実行可能なjar」ファイルにエクスポートしました。

ファイル選択は別として、これは主に読み取りと書き込みを行う「バッチ」であり、ユーザーインターフェイスはほとんどないことに注意してください。 Eclipseの実行中に、「if(debug)System.out.print( "something to print");」のようなものを使用して、「debug "デバッグ中はTRUE、運用環境ではFALSE。

上記のすべてが機能しました!

ここで、実行可能なjarを開始します(Win/XPでjarファイルをダブルクリック)、ファイルセレクターを見ることができますそれを使用できますしかし、入力ファイルを選択した後...nothing more:(ユーザーインターフェイスを持たない)ファイルが読み込まれたかどうかわからない、生成された出力が表示されないデバッグ変数をTRUEに設定して再エクスポートしても、jarが機能しているかどうかを確認するための中間コンソールデバッグメッセージを一覧表示する「コンソール」さえありません。

実行中のjar(VBのMsgBoxなど)を「実行時デバッグ」する方法はありますか?ある種の「ログファイル」を「有効」にするか、調べることができますか? (明らかに、私のjarは結果ファイルを書いていないので、私は* .logを書くこともできません)私はちょうどできません私のマシンにEclipse以外をインストールして(そして運が良かったので)実行したので、通常の開発者のツール、ユーティリティ、その他の便利なものはありません。

37
eewing

実行可能なjarであっても、コンソールから実行できます。ターミナルウィンドウを開き、jarを含むディレクトリに移動し、「Java -jar yourJar.jar」と入力します。そのターミナルウィンドウで実行され、キャッチされていない例外からのスタックトレースを含むsysoutおよびsyserr出力がそこに表示されます。コンパイル時にデバッグをtrueに設定してください。そして成功を祈る。


他のことを考えてみてください-Win7を使用している場合、ユーザーアプリケーションが特定のディレクトリにファイルを書き込む際に、アクセス許可の問題が発生することがよくあります。出力ファイルを書き込むディレクトリが、許可されているディレクトリであることを確認してください。

将来のプロジェクトで、それが十分に大きい場合は、「デバッグ」出力に標準のログ機能のいずれかを使用できます。コンソールを使用することに依存するのではなく、ファイルにリダイレクトするのが簡単です。しかし、このような小さな仕事の場合、これは問題ないはずです。

14
arcy

http://www.eclipsezone.com/Eclipse/forums/t53459.html

基本的にそれを実行します:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=1044

アプリケーションは、起動時に、別のソースから接続するまで待機します。

93
RamonBoza

特別なオプションを使用してJavaコマンドを起動すると、JVMのデバッグ機能を有効にできます。

Java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar path/to/some/war/or/jar.jar

コマンドラインでそのようなjar.jarを起動すると:

  • putthisポート8000​​でリッスンするサーバー(server=y)のJVMインスタンス(address=8000
  • Listening for transport dt_socket at address: 8000stdoutに書き込み、
  • 次に、デバッガーが接続するまでアプリケーション(suspend=y)を一時停止します。このシナリオでは、デバッガーはclientとして機能します。

デバッガを選択するための一般的なオプションは次のとおりです。

  • Eclipseデバッガー:(Run->Debug Configurations ...-> selectRemote Java Application->New launch configurationボタンこのデバッグ構成の任意のName接続タイプ:標準(ソケット添付)および接続プロパティエントリホスト:localhostポート:8000Apply変更Debugをクリックします。EclipseデバッガーがJVMに正常に接続された時点で、jar.jarの実行が開始されます。
  • jdbコマンドラインツールjdb -connect com.Sun.jdi.SocketAttach:port=8000で起動します
45
Abdull

IntelliJ IDEA を使用すると、Jar Applicationランタイム構成を作成し、JAR、ソース、JREを選択してJarを実行できます。デバッグを開始します。 ここ はドキュメントです。

1
BullyWiiPlaza