Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Eclipseで2回目からデバッグができない。(Java EE)

Eclipse Java EEでのデバッグがなぜか正常動作しません。
みなさんのお知恵を拝借できると助かります。

[症状]
・Eclipse起動直後の一回目のデバッグ起動ではブレークポイントでストップするが、
 同じようにデバッグをしても同じ個所のブレークポイントでストップしない。
  ⇒Eclipse内のtomcatサーバを再起動しても同様
  ⇒Eclipse自体を再起動すると(-clean有無両方)同様に一回目のみストップ
・エラーメッセージは特にでない。
・ブレークポイントを違う場所にしても同じ。
・ブレークポイントは、サーブレットのデフォルトでてきるdoGetの直後に配置。
・マーカータブにはタスクのみ。エラー・ログ、問題タブには表示なし。

[やってみたこと]
・環境に記載しますが、Indigo・HeliosとTomcat6,7、jre6,7でそれぞれ試しても同様。
・問題を整理してみたかったので、Eclipseはクリーンインストール後にテストしています。
・もろもろ検索してみて、サーバの設定にある「XMLファイルを分割してモジュール・コンテキスト
 を公開」にチェックをしています。

[環境]
・OS…Windows 7 64bit Professional
・CPU…AMD Phenom X6 1065T (関係ないかもしれませんが…)
・Eclipse…現在落とせる最新のIndigo・Heliosでテスト
   Indigo 3.7.1 Java EE
   Helios 3.6.2 Java EE
   (Pleiades 1.3.3で日本語化済み、共に64-bit)
・Java…Oracle社からJDKをダウンロード、同時にインストールされるjreを利用して動作
   jre6 1.6.0_27
   jre7 1.7.0-b147
・Tomcat…Tomcat6,7でテスト
  tomcat6 6.0.33
  tomcat7 7.0.22
  (共に、x64のWindowsバイナリ版)

書けることはすべて書いたつもりですが、その他の環境的な問題なのか、どうしても原因がわかりません。他にも観点があったり、同様の現象がある方などいらっしゃいましたら是非教えてください。よろしくお願いします。

6

回答

12572

閲覧

6件の回答

評価

0

ブラウザがキャッシュしていて、
実際はリクエストされていない可能性はありませんか?

どGetで、ログや、コンソールにメッセージを出力するようにした場合、
ブレークポイントでストップしない場合でも出力されますか?

評価

0

satomiさん

ご回答ありがとうございます。

> ブラウザがキャッシュしていて、
> 実際はリクエストされていない可能性はありませんか?

デバッグ用のブラウザは内部Webブラウザです。おそらくキャッシュ等はないかと
思いますが、内部Webブラウザから更新をしても同様になるので、ブラウザの
キャッシュではなさそうです。ただ、おっしゃられている通り、実際のリクエストがうまく
Eclipseに伝わっていないような挙動に見えています。ブラウザキャッシュ以外にも
リクエストを遮断するような仕組みがあるのでしょうか。。。

> どGetで、ログや、コンソールにメッセージを出力するようにした場合、
> ブレークポイントでストップしない場合でも出力されますか?

2回目のデバッグからは1回目とまったく同じレスポンスが返ってきます。
したがって、1回目でログやコンソール出力をした場合成功し、2回目も
同じメッセージが表示されます。ただし、2回目のデバッグ前にメッセージを
変更するなどしても反映されません。(1回目と同じものしか表示されません)

上記のような状況です。何か他にも心あたりがございましたら
アドバイスをお願いします。

評価

0

やはり、キャッシュされているような気がしますが。

URLの最後にパラメータがあれば、
&foo=0
パラメータが無いなら
?foo=0
とか手で追加して、URLを変化させてみたら
ブレークポイントで止まったりしません?

上記はURLを変更する事で、キャッシュを使わずに
リクエストさせる方法です。

キャッシュが原因なら、とりあえずブラウザの設定で
回避できるかもしれません
Eclipseの内部WebブラウザはIEを利用していたと思いますので、
IEの設定が使われてるんじゃないかな。

しかし、結局、実運用で同じ問題にぶつかる可能性があるので、
httpヘッダーや、Metaタグでキャッシュ回避した方が
良いかと思います。

それでも画像ファイル等は、1度のセッション内で
使いまわされる場合があるので、キャッシュ利用を
回避できなかったりする事もあります。
その場合、前述したようにURLを動的に変化させれば
別物扱いになります。

評価

0

satomiさん

ありがとうございます。結論から言うと解決しました!
だいぶ悩んでいたので本当にありがとうございます。

[やったこと]
IEの「インターネットオプション」⇒「閲覧の履歴」⇒「設定」
で「Webサイトを表示するたびに確認する」にチェック
(念のため、64bit、32bitの両方のIEで設定)

[結果]
Getパラメータ等の変更をせずに、毎回キチンとブレーク
ポイントで止まってくれるようになりました。

[ちょっと悩んでいた点(参考までに)]
今回は、HTTPで実行するコマンドを作っていたために、とくに
Metaタグなどの設定もしておらず、あろうことか、サーバサイドでも
キャッシュのクリアをしていませんでした。
そこの手を抜いてしまっていたために、うまく新規ページ扱い
をされていなかったものと思われます。反省。


Eclipseの内部ブラウザって作りこんであるものとばかり思って
いました。IEだったんですねぇ。(Windowsの既定はFirefoxにしているので
外部ブラウザにしない限り、強制的にIEなんだと思います。)

いずれにしろ、100%ビンゴなご回答ありがとうございました。

評価

0

ウィンドウ(W) > 設定(P)

一般 > WEBブラウザ

評価

0

+さん

ご返信ありがとうございます。

そうなんですけど、内部Webブラウザって選べないんですよね。
外部にすると選択可能ですが、Eclipseの外で開いてしまいますし。

HeliosぐらいからPDTを使うと、内部Webブラウザが変なところに
開いてしまったり(真ん中のビューに持っていけない)、Aptanaデバッガは
なぜか内部Webブラウザでは動作してくれなかったり(Firefoxのみ?)

結構、ブラウザまわりで困ってたりすることもあるので、また
ご意見あったら教えてください。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。