2009-05-26 12 views
0

私はEclipse上に構築された小さなアプリケーションのコントロールを持っており、DefaultCellEditorの作成に問題があります。コードは実際にはDefaultCellEditorのサブクラスを使用していますが、私はDefaultCellEditorを使用して問題を再現することができます。実際のクラスの問題を解決することを願っています。私はJDK 1.5と1.6の両方でこれを試してみましたが、両方で同じ動作をします。DefaultCellEditorコンストラクタを呼び出すアプリケーションがハングアップ

問題がDefaultCellEditorのコンストラクタが呼び出されたときに起こります。

log.debug("Trying construction."); 
currentCellEditor = new DefaultCellEditor(new JTextField()); 
log.debug("Constructed OK."); 

このコードは、時間の多分20%、アプリのハングを実行し、CPUを100%に釘付けにされた場合 - がありますように見えますどこかに無限ループがありますが、私はどこにいるのか分かりません。最初のログ行は出力されますが、2番目の行は出力されません。

私は、DefaultCellEditorクラスのコピーを作成し、そこにSystem.out.printlnステートメントを挿入して問題の発生場所を特定できるかどうかを試しました。コードが正しく実行されている間に、すべてのデバッグステートメントが出力されますが、正しく実行されないとステートメントは出力されません。何が起きているのでしょうか?

+2

スレッドダンプ(Windowsではcontrol-break)を実行して、スレッドが実行中または待機中の場所を確認できます。 –

+1

いつものように、あなたがAWT EDTで動作していることを確認してください。 –

答えて

0

質問に対する両方のコメントが役に立ちました。私はスレッドダンプを使用して、ループを引き起こしていたものを把握することができました(私はStackTraceを使用して終了しました)。私のもう一つの問題は、以前のEDTで、このコードが実際に実行されている時点ではEDTにはもういないということです - 今、私はそれを追跡しなければなりませんが、初期のテストではこれをEDTに問題を解決します。ありがとう!

関連する問題