QA@IT

クラスファイルを1つずつ分けると片方のクラスを認識しない

2809 PV

Javaプログラミング初心者なのですが質問させて頂きます。
以下に記したクラスA,B2つをそれぞれ一つのファイルとして分けて記すと
B t = new B();のところでシンボルが見つけられないと出てしまうのですがなぜでしょうか。
クラスファイルA内でクラスBを記すとクラスB内のメソッドは利用できます。


・クラスA

import twitter4j.*;

class A{
main{

B t = new B();
twitterStream.addListener(t);

list={ユーザID};
FilterQuery query = new FilterQuery(list);
query.follow(list);
twitterStream.filter(query);

}



・クラスB

import twitter4j.;
import java.util.regex.
;

class B extends StatusAdapter{

public void onStatus(Status status) {

try{

 String tweet = status.getText();
String target = tweet;
String regex = "\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
System.out.println("MyStatusAdapterクラス内 Result: " + extractMatchString(regex, target));

}

}

}


回答

javaコマンドの実行時のclasspath上に、Bのクラスファイルが存在しないからです。
classpathはJava初心者が嵌りやすい穴の一つで、解説しているサイトは沢山あります。
ご自分の環境に合った参考のサイトを探して、熟読することをオススメします。

編集 履歴 (0)
  • 回答ありがとうございます。
    以下のサイトのように両ファイルでなくmainを含むファイルのみ(ClassSample.java)をコンパイルのみではダメなのでしょうか。
    http://www.acroquest.co.jp/webworkshop/java_course/J_lecture10.html
    ちなみに両ファイル同じディレクトリで両ファイルjavac後に指定するとコンパイルできました
    -

コンパイル時のソースパスに両方のソースコードが配置されていないためではないでしょうか。

編集 履歴 (0)
  • 回答ありがとうございます。
    レスポンス遅くなってすみません。
    両ファイルを同じディレクトリに置き、Javacコマンド後に両ファイルしていすると通りました。
    長々とありがとうございました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。