2011-06-01 9 views
7

another questionを議論している間、私は@Aaron Digullaは、次のことを指摘し、尋ねた:Eclipseでデバッグシンボルのステータスを確認するにはどうすればよいですか?

は、Java SDKをインストールした場合は、Javaのインストールのルートディレクトリに「src.zip」ファイルがあるはずです。見つからない場合は、Javaをもう一度ダウンロードしてください。 Eclipseはソースを自動的に見つけて、JTable型を開いたとき(またはスタックトレース内の行をクリックしたとき)に表示します。

ファイルsrc.zipは私のために存在するが、@Aaronが言ったように私はまだJTableのソースにアクセスすることはできません。何が問題なの? Eclipseでこれをどのように解決できますか?

「不明な情報源」は私に心配ですが、 です。あなたのJavaバージョン にデバッグシンボルがないことを意味します。 は、a) の開発中にSDKを使用し、b)SDKに のデバッグシンボルが含まれていること、c) コマンドのJavaにデバッグシンボル をロードするときにクラスをロードしないようにしないことを確認してください。

a)私はEclipseを使用していますが、なぜSDKを使用してはいけないのですか?

b)SDKにデバッグシンボルが含まれているかどうかを確認するにはどうすればよいですか?そうでない場合は、どうすれば追加できますか?

c)Eclipseがデバッグシンボルを取り除くようにjavaに通知しているかどうかを確認するにはどうすればよいですか?

残念ながら、私はJava開発プロセスを完全に理解していないように感じています。

+0

'src.zip'を開いたことがありますか?内部は何ですか? – Pops

+0

@Lord Torgamus:開いた、はい。ソースがあります。 – Heisenbug

+0

なぜ 'JTable'のソースにアクセスできないのですか?より具体的にしてください。 – Pops

答えて

6

a)Eclipseには独自のJavaコンパイラが付属しているため、Java Runtime Environmentを使用している場合、jarsignerなどの追加機能やJREソースコードが欠落している場合を除き、多くの問題は発生しません。インストールを確認する最善の方法は、パッケージマネージャを使用することです。ただし、他の手段でインストールした場合、ディレクトリを注意深く観察すると、通常は2つのディレクトリを区別できます(下記参照)。

b)JREライブラリは、通常、デバッグシンボルを表示せずにコンパイルされます。 SDKライブラリには通常、それらがあります。 Javaデバッグは、デバッグポートを開くコマンドラインオプションでJVMを起動することによって行われます。 SDKは、このポートを介して設定されるブレークポイントを要求するJVMとの会話を行います。後でJVMをステップ実行する場合は、このポートを介してstep/jump/rewindデバッグコマンドも送信します。 「デバッグ」シンボルは、実際には特定のバイトコード命令から始まるソースコードの行を参照するJVMバイトコードテーブルです。これにより、デバッガは実行中のバイトコードを元のソースコードの行番号に関連付けることができます。

c)(メニューから)[ウィンドウ] - > [プリファレンス](セレクタ列)で、[Java]を展開し、[Java]の下にある[ビルドパス]を展開し、[ 「JRE_SRC」という名前の変数を含むいくつかの変数が表示されます。この変数は、公開されているJREライブラリのソースコードを含むsrc.zipファイルを指していなければなりません。 JRE_LIBを同時に確認することをお勧めします。

通常、JDKのホームディレクトリには、「bin」サブディレクトリと「jre」サブディレクトリがあります。したがって、「bin」サブディレクトリのみが表示されている場合は、JREホームディレクトリ内にある確率は良好です。この知識によって、うまくいけばあなたは残りを理解することができます。

+0

+1ありがとうございました。今それははっきりしています。 JRC_SRCは実際には空ですが、修正します。ちょっと別の質問:SDKではなくJREライブラリを使用していると思いますが、どうすれば変更できますか? – Heisenbug

+0

@ 0verbose、まずJDKをダウンロードしてインストールします。 Linux、Windows、またはSolarisの場合は、SUN/Oracle JDKをダウンロードしてください。それ以外の場合は、JDKのベンダーの指示を参照してください。次に、JDKの「ルート」ディレクトリを書き留めます。設定ダイアログの同じ "Java"コンテキストから、 "installed JREs"を選択し、JDKルートディレクトリを追加します。新規プロジェクトのデフォルトにするには、JREの隣にあるチェックボックスをオンにします。次に、コンパイルレベルをJDKのコンパイルレベルに設定します。最後に、既存のプロジェクトのビルドパスを新しい設定に対応させる必要があります。 –

1

[環境設定]([ウィンドウ] - > [環境設定])に移動し、検索フィールドに「JRE」と入力します。

[インストールされたJRE]を選択します。 Java Runtimeが期待するバージョンのJavaを使用していることを確認してください。

場合は、[編集]をクリックします。 "rt.jar"のアイコンの上に小さなテキストシンボルが表示されます(たとえば、dnsns.jarとは違って見えるはずです)。

表示されない場合は、[デフォルトに戻す]をクリックします。それでも問題が解決しない場合は、パスを再確認してください。

他の問題も解決するはずです。

いくつかのJava実装は、クラスがロードされる際にデバッグシンボルを無視することができます:

は( Check if Java bytecode contains debug symbolsこの質問を参照してください) javap -vでそれを逆コンパイル、クラスはデバッグシンボルが含まれているかどうかを確認するには。これにより、シンボルを含むクラスに対して「Unknown Source」が発生する可能性があります。 SunのJavaにはこのようなオプションがあると確信していましたが、もう見つけられません。

+0

+1:助けてくれてありがとう。あなたは非常に便利でした! – Heisenbug

関連する問題