【お知らせ】カテゴリの見直しについて

Eclipse3.1(All-in-one Eclipse)を使っています。

ブレークポイントを設定すると、指定した行で止まるのですが、ブレークポイントを設定している行にカーソルが当たらず、ステップオーバーしても、どの行にいるのか把握しにくい状況になっています。
行にカーソルがあたるようにするには、どうすればよろしいでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

現象が同じかどうか分かりませんが、実行する前にあらかじめ「デバッグ」の画面を開いておくと、カーソルが出てソースを追えるようになりました。


普通は自動的にデバッグ画面に切り替わるものなんですが…。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Tomcatのソースパスにプロジェクトが追加されていなかったのが原因でした。

お礼日時:2006/02/18 13:06

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qeclipseのデバッグ時のステップ実行が・・。

eclipseのデバック時のステップ実行がおかしくなってしまいました。
現状としては、一応ブレイクポイントで止まってはいるのですが現在行の色がつきません。また、デバッグウィンドウの変数の中をみようとするとエラーがでてしまいます。

バージョンは3.1です。
関係ないかもしれませんが最近プラグインのJSeclipseを導入しました。

設定などわかるかたいましたらよろしくお願いします。

Aベストアンサー

別プロジェクトなどを作成していて、同じ名前のソースを見に行っているとかないですか?
それかクラスファイルが古いままとか。。
ためしにJavaファイルがビルドされているかを確認してみてはどうでしょう?

Qinterface,extend,implementのちがい

お世話になります、

Javaを勉強しているのですが、
interface,extend,implementの使い分けがわかりません。

私の解釈としては、
(1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。

(2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。

(3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか?

とにかくこの3つのを使い分けるコツとかあれば教えてください。
よろしくお願いします。

Aベストアンサー

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば、getStringLength()メソッドなどが
あったほうが良いでしょうか。
このgetStringLength()メソッドは、2バイト文字も1バイト文字も「1文字」
と数えてくれると言う点で、まさに、日本語クラス用のメソッドだと言えるでしょう。

例えば、Java的に記述すると、、、
class Japanese {
public int getStringLength() {
  ・・・
return strlength;
 }
 ・・・
}

class TextField {
・・・
}

class JTextField extends TextField, extends Japanese {
・・・・
}

C++ではそのように実装するでしょう。
しかし、Javaにはこのような高度な機能はありません。

そこで、生まれた苦肉の策が、「interfaceとimplements」です。

interface Japanese {
public int getStringLength(); // interfaceは実装を含まない!
                 // すなわち「実装の継承」ができるわけではない。
}

class TextField {
・・・
}

class JTextField extends TextField implements Japanese {
・・・・
public int getStringLength() {
  ・・・
return strlength; //implementsの実装を「各クラスで」実装してやる必要がある。
 }
}


結局のところ、Javaでは、複数のクラスを親クラスには持ち得ないため、継承できなかったクラスは「各クラスで実装してやる必要性」があるのです。


ではどのように使うのが効果的か?

なまえのままです。「代表的なインターフェイス」にたいしてinterfaceを使うのが良いと思います。

例えば、プレイヤー系であれば、ビデオ・コンポ・ウォークマン・などにかかわらず、
interface controlpanel {
public play();
public stop();
public next();
public back();
}
というような基本的インターフェイスを「持っているべき」です。

こうすることで、それぞれのクラス宣言の際に、これらの「インターフェイスを持っているべきであり、実装されるべきである」ということを「強く暗示」することができます。
class videoplayer extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

こうすることで、同様のクラスを作成するユーザーは、
「プレイヤー系は、4つ操作が出来るコントロールパネルをインターフェイスとして持つべきなのだな!?」という暗示を受け取り、自分のクラスでもそれを模倣するでしょう。

class mp3player extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

また、これらのクラスを使用するユーザーも、「implements controlpanel」という
表記を見て、「4つの基本操作は押さえられているのだな!」という基本中の基本動作を抑えることが出来ます。

まとめると、クラスに「こういう特徴もたしてください!」「こういう特徴持ってますよ!」という一種の暗示的警告や方向性を与えることができるわけですね。

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば...続きを読む

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む

QOracle(オラクル)で、日付時刻型の検索方法について

質問させていただきます。
データベースはオラクルを使っていて、
SQL文で、抽出するときにエラーが出て困っています。

日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。
2005/05/26 を抽出したいのですが、
BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59'

だと、エラーでできません。
どなた様か、ご教授よろしくお願いしますm(_ _)m

Aベストアンサー

日付検索を行う場合は、以下のように書式を含める必要があります。

col BETWEEN TO_DATE('2005/05/26 00:00:00','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('2005/05/26 23:59:59','YYYY/MM/DD HH24:MI:SS')

ただ、厳密には

col >= TO_DATE('2005/05/26', 'YYYY/MM/DD')
AND
col < TO_DATE('2005/05/27', 'YYYY/MM/DD')

と書くべきでしょうね。

Qeclipse-Tomcatでのデバッグについて

eclipse-Tomcatでのデバッグについて

下記の構成
eclipse3.5
jdk1.6
Seasar2のプラグイン各種
Doltengを使用してプロジェクトを作成しています。

Actionクラスのアノテーション@Executeのメソッドにブレークポイントを設定して
Tomcatを起動し、画面内で同メソッドが動くようなことをしても
ブレークポイントで一時停止してくれません。

どこかに設定があるのでしょうか?

Aベストアンサー

これは、SeasarのAOP機能がバイトコード(コンパイルした後のコード)を自動生成していて、デバッガと相性が悪いのが原因で、実際にはブレークポイントでとまっているので、エラーは無視してください。(ダイアログに無視するオプションが出ているはずです。)

デバッガ自体はWTPでもsysdeo tomcatプラグインでも使用できます。

Qequalsの逆

javaで、文字列の場合は比較演算子の「==」は用いずに

if ((str1.getText()).equals(str2)){
(※…str1,2は文字列)

と書きますよね?
この逆で、文字列str1とstr2は等しくないとき、にはif以下の条件文をどのように書けばよいでしょうか?

Aベストアンサー

>if !((str1.getText()).equals(str2)){

あくまで
if(){
}


!(str1.getText()).equals(str2)
が入っているので
if !((str1.getText()).equals(str2)){
じゃなくて
if (!(str1.getText()).equals(str2)){
こう。

Qyyyymmddからyyyy/mm/ddへの変換

いつもお世話になっております。
Aと言う変数にはyyyymmddの値が入っていて
Aをyyyy/mm/ddにしてBの変数に入れたい場合の処理がわかりません。
調べたところ、SimpleDateFormatクラスと言うものを使えばよいと言うことが判明しました。
しかし、今まで使ったことがないのでよくわかりません。
変数Aと変数BはどちらもString型です。
ご教授お願い致します。

Aベストアンサー

 こんにちは。

 本当に変数aの中の文字列が厳密にyyyyMMddの形式のなっているのなら、普通に

String b = a.substring(0, 4) + "/" + a.substring(4, 6) + "/" + a.substring(6, 8);

 これでいいと思いますが、いったんDate型にする必要があったり、ちゃんと日付として認識できるか確かめる必要がある場合は、

String a = "20051029";

SimpleDateFormat formatter = (SimpleDateFormat)DateFormat.getDateInstance();
formatter.applyPattern("yyyyMMdd");
try {
  Date date = formatter.parse(a);
  formatter.applyPattern("yyyy/MM/dd");
  String b = formatter.format(date);
  System.out.println(b);
}
catch (ParseException ex) {
  System.out.println("解析失敗");
}

 こんな感じでいいんじゃないでしょうか。

 こんにちは。

 本当に変数aの中の文字列が厳密にyyyyMMddの形式のなっているのなら、普通に

String b = a.substring(0, 4) + "/" + a.substring(4, 6) + "/" + a.substring(6, 8);

 これでいいと思いますが、いったんDate型にする必要があったり、ちゃんと日付として認識できるか確かめる必要がある場合は、

String a = "20051029";

SimpleDateFormat formatter = (SimpleDateFormat)DateFormat.getDateInstance();
formatter.applyPattern("yyyyMMdd");
try {
  Date date = formatter.p...続きを読む

QEclipseのデバッグ機能が正常に動作しない(異なるプロジェクト参照)

Eclipse上で思うようにデバッグができずに困っています。

<環境>
Eclipse3.0.1、Tomcat5.0を使用しています。
Eclipse上にプロジェクトA、Bの2つのプロジェクトが存在します。
A、BはそれぞれCVSで同じプロジェクトから派生しています。
(AはHEADから、Bはブランチから作成したプロジェクト。)
どちらのコンテキストも、コンテナ上の起動では問題がありません。
各プロジェクトのプロパティ→情報で表示されるロケーションも、それぞれ正しいパスを表示しています。

<現象>
Bのソースで、150行目にブレイクポイントを貼ったとすると、
閉じられていたAのソースが自動的に開き、Aの150行目に移動して止まります。
その後ステップ実行しても、Aのソース上をポインタが移動しているように見えます。

しかし実際の処理はBの方が行われているようで、
(AとBで違う処理を行うようにして試したところ、Bの処理が行われた結果を確認できた)
デバッグの目に見える動作がおかしくなっているようです。

<試したケース>
プロジェクトAの名前を変更してからBでデバッグしても、
変更した名前のプロジェクトのソースを開いてそちらへ移動しているようです。
また、Aでデバッグした場合はAを実行しているように見えます。
プロジェクトAを削除した場合、ソースが見つからない等のエラーになります。

--------
Bでデバッグをできるようにしたいのですが、
原因や回避策などご存知の方、アドバイスください。よろしくお願いします。

Eclipse上で思うようにデバッグができずに困っています。

<環境>
Eclipse3.0.1、Tomcat5.0を使用しています。
Eclipse上にプロジェクトA、Bの2つのプロジェクトが存在します。
A、BはそれぞれCVSで同じプロジェクトから派生しています。
(AはHEADから、Bはブランチから作成したプロジェクト。)
どちらのコンテキストも、コンテナ上の起動では問題がありません。
各プロジェクトのプロパティ→情報で表示されるロケーションも、それぞれ正しいパスを表示しています。

<現象>
Bのソースで、150行...続きを読む

Aベストアンサー

Eclipse3.0系では標準でサーバサイドのデバッグはできないと思いますが、何かプラグインを入れておられるのでしょうか。

もし、SysdeoのTomcatプラグインを入れておられるのでしたら、
設定→Tomcat→ソース・パス
を編集してみてください。

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

QEclipseで、プロジェクト名のところに赤いバッテンのエラーマークが

Eclipseで、プロジェクト名のところに赤いバッテンのエラーマークがついていますが、どのソースファイルにも赤いエラーマークは無く、なぜエラーになっているのか分かりません。

どこでエラーが出ているのか調べる方法はあるでしょうか?

Aベストアンサー

ウインドウ → ビューの表示 → 問題
をクリックすれば問題のある箇所が表示されるはずです


人気Q&Aランキング