エラーの原因がわかりません

このQ&Aのポイント
  • JAVA初心者ですが、ファイル入力を行うプログラムを実行すると、エラーが出ますが、そのエラーの原因がまったく見当がつきません。
  • 読み込みファイルの指定でコンパイルエラーが発生しています。
  • FileReaderやBufferedReaderのコンストラクタに問題があるため、エラーが発生しています。
回答を見る
  • ベストアンサー

エラーの原因がわかりません

JAVA初心者ですが、ファイル入力を行うプログラムを実行 すると、エラーが出ますが、そのエラーの原因が まったく見当がつきません。 誰か教えてください。 ------------読み込みデータ(loc.dat) 2 11 1 4 1 5 7 1 3 7 7 2 12 11 1 4 1 11 12 4 1 5 3 1 1 11 13 4 1 5 2 1 -------------プログラム import java.io.*; class ExReader {   public static void main(String[] args) { try { //読み込みファイル指定 FileReader fr = new FileReader("loc.dat"); BufferedReader br = new BufferedReader(fr); //ファイルから1行ずつ読み込む String s; while ((s = br.readLine()) != null) { System.out.println(s); } //読み込みファイルをクローズする br.close(); } catch (Exception e) { System.out.println("err: "+e); System.exit(1); } } } ---------------コンパイル結果 C:\JAVA\sim>javac ExReader.java ExReader.java:7: シンボルを解決できません。 シンボル: コンストラクタ FileReader (java.lang.String) 場所 : FileReader の クラス FileReader fr = new FileReader("loc.dat"); ^ ExReader.java:8: シンボルを解決できません。 シンボル: コンストラクタ BufferedReader (FileReader) 場所 : java.io.BufferedReader の クラス BufferedReader br = new BufferedReader(fr); ^ エラー 2 個

  • Java
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.3

この類のエラーは CLASSPATH が原因とは考えにくいです。 自分で FileReader という名前のクラスを作っていませんか? コンパイラが自作の FileReader クラスと組み込みの java.io.FileReader クラスをごっちゃにしていると思われます。 自作の FileReader クラスがあれば、それを(ソースファイルもクラスファイルも)削除するか別のディレクトリに移動してください。 ところで、 > ここを参考にしてhttp://okweb.jp/kotaeru.php3?q=1137005 とおっしゃいますが、本当に全部読みましたか? kacchann さんは「CLASSPATHは設定しないほうがいい」とおっしゃっていますよ。 実際、 .;%JAVA_HOME%\jre\lib;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar というのはCLASSPATHの設定としてはもっともありがちな間違いの一つです。 経験者としてあえてはっきり言わせていただきますが、初心者がCLASSPATHの設定の意味を理解しないまま闇雲に設定しても混乱するだけです。今からでもいいですからCLASSPATH設定は消してください。設定すべき環境変数はただ一つ、PATHだけです。

javajavaer
質問者

お礼

解決しました!! 検索をかけてFileReaderというクラスを削除したところ コンパイルできました。 UKYさんありがとうございました。

その他の回答 (2)

  • osumitan
  • ベストアンサー率33% (102/307)
回答No.2

CLASSPATHが正しく設定できていないだけなのでは? 環境変数のCLASSPATHを確認してみてください。

javajavaer
質問者

補足

環境変数のCLASSPATHが設定されてなかったので ここを参考にしてhttp://okweb.jp/kotaeru.php3?q=1137005 .;%JAVA_HOME%\lib\tools.jar 及び .;%JAVA_HOME%\jre\lib;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar を設定し、再度コンパイルしましたが問題が解決しません。他に何か考えられる原因があれば教えてください。 ちなみに、パソコン環境はWinXP、コンパイラj2sdk1.4.2_06になります。

noname#19662
noname#19662
回答No.1

私の環境では実行できたのでソースには問題ないようです。 他のファイルは実行できるんですか?

javajavaer
質問者

補足

他のファイル(例えば、本に書いてあるプログラムなど)についてはコンパイルしデバッグできますが、今のところ自分で作るこのようなファイル入力に関してのみこのようなエラーが発生します。 私のパソコン環境に問題があるんでしょうか!?

関連するQ&A

  • int型で表示したいのですが・・・

    java初心者です。 テキストファイルの読み出しを行っているプログラムで int型に数値を格納して表示したいのですが、わからず困っています。 下記はテキストファイルの読み出しを行ったプログラムです。 import java.io.*; class BufferedReaderTest { public static void main(String[] args) { try { FileReader in = new FileReader("file name"); BufferedReader br = new BufferedReader(in); String line; while ((line = br.readLine()) != null) { System.out.println(a); } br.close(); in.close(); } catch (IOException e) { System.out.println(e); } } } int a = Integer.parseInt(line);を使ってみたのですができませんでした。 読み込みしようとしているファイルの中身は -0.00012 -0.00009 -0.00009 -0.00012 -0.00009 -0.00009 -0.00009 -0.00012 ・・・・・・・・・ となっています。 教えていただけると助かります。

    • ベストアンサー
    • Java
  • 拡張子の読み込み制限を設けたいのですが・・・

    現在Javaのプログラム課題を行っているものです。 前回こちらで質問させていただいたのですが、 解決に至らなかったので再度質問させていただきたいと思います。 前回の質問→ http://okwave.jp/qa4023470.html こちらが修正後のプログラムの一部です。↓ package studyA; import java.util.*; import java.io.FileReader; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.IOException; public class A23_StrArray extends A22_StrArray { /** * テキストファイルの読込み(上書きモード) * @param path ファイルのパス * @exception FileNotFoundException ファイルが見つからなかった場合 * IOException 入出力エラーが発生した場合 */ // 修正として付け加えた部分(開始位置) public class CheckClass check { check = new CheckClass(); check = path; public boolean accept(path) { //拡張子がtxtであるかのの判定を行います。 String ext = getExtension(path); if (ext != null && ext.equals("txt")) { return true; } } } //プログラム修正箇所 (終点) public void readFile(String path) throws Exception { try { //BufferedReader in = new BufferdReader(new FileReader()) FileReader fr = new FileReader(path); //FileReaderのインスタンスを作成 BufferedReader br = new BufferedReader(fr); //BufferedReaderのインスタンスを作成 String line; list.clear(); //リストをクリア while ((line = br.readLine()) != null) //要素がなくなるまで繰り返す { add(line); } System.out.println("ファイルを読み込みしました。"); br.close(); } catch(FileNotFoundException e)//ファイルが見つからなかった時 { System.out.println("ファイルが見つかりません。"); } catch(IOException e)//入出力エラーが発生した場合 { System.out.println("入出力エラーが発生しました。"); } } 現在は、コンパイルエラーでC:\Java>javac A23_StrArray.java A23_StrArray.java:28: '{' がありません。 public class CheckClass check と表示されます。一体どのように修正を加えれば、 txtのみ読み込んで、上書きなどができるプログラムを作ることができるのでしょうか?

    • ベストアンサー
    • Java
  • コマンドライン引数

    『やさしいJava』で勉強してます。 import java.io.*; class Sam3 { public static void main(String args[]) { if(args.length != 1){ System.out.println("ファイル名が違うよ。"); System.exit(0); } try{ BufferedReader br= new BufferedReader(new FileReader(args[0])); String str; while((str = br.readLine()) != null){ System.out.println(str); } br.close(); }catch(IOException e){ System.out.println("エラー"); } } } で、コンパイルして、 Sam3 test2.txt と実行しても 「準備ができていません。読み取り中・・・」 としかでません。 なにか間違いがあるのでしょうか? お願いします。

    • ベストアンサー
    • Java
  • エラー

    以下のプログラムをコンパイルすると Eki.java:7: 型の開始が不正です。 try { ^ Eki.java:24: <identifier> がありません。 } ^ エラー 2 個 というエラーが表示されます。 どういう意味ですか。 import java.io.*; import java.util.*; class Eki { Vector midoEki = new Vector(); try { FileReader midoF = new FileReader("mii.txt"); BufferedReader midoB = new BufferedReader(midoF); String str; int i = 0; while ((str = midoB.readLine()) != null) { midoEki.insertElementAt(str, i); System.out.println(midoEki); i++; } midoF.close(); } catch(Exception e) { System.err.println("e"); } }

  •  DataをtxtFileに書かせて、同じFileから読み込みです、エラーの意味が不明です

    JAVA初心者です、宜しくお願いします。  DataをtxtFileに書かせて、同じFileから読み込ませるコードですが、書き込みは正常に出来、(test1.txt)Fileも出来、内容もOKなのですが、同じFileからの読み込みがエラーになります。 一体どこが間違っているのでしょうか。 Fileは同じプロジェクトにおいています。(当然同一Fileからの読み込みです。) 諸兄の方々宜しくお願いします・・・正直泣いています。 public class Write_Read_070620{ public static void main(String args[]){ try{ PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("test1.txt"))); pw.println("Hello!!"); pw.println("Goodbye!!"); pw.close(); BufferedReader br0 = new BufferedReader(new FileReader("text1.txt")) ; String str0 = br0.readLine() ; System.out.println("入力データーを確認します\n" + " Team " + str0); br0.close(); } catch(IOException e){ System.out.println("入力エラ-です。\n "); } } }

    • ベストアンサー
    • Java
  • CSV読み込み 文字化け

    失礼いたします。 以前のログを見てエンコードを設定してみたのですが、出力が文字化けします。ローカルファイルを読み込んでコンソール出力しているだけなのですが・・・。 分かる方、よろしくお願いします。 -------------------ソースはここから import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; // import java.io.FileReader; FileReaderからInputStreamReaderに変更済み import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class ReadCSV { public static void main(String[] args) { try { File csv = new File("C:\\AP.csv"); // BufferedReader br = new BufferedReader(new FileReader(csv)); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"EUC_JP")); // BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"MS932")); while (br.ready()) { String line = br.readLine(); StringTokenizer st = new StringTokenizer(line, ","); while (st.hasMoreTokens()) { System.out.print(st.nextToken() + "\t"); } System.out.println(); } br.close(); } catch (FileNotFoundException e) { キャッチ処理 }

    • ベストアンサー
    • Java
  • javaでの文字列からの数字抽出

    文字列内の数字だけを取り出したいとおもっています。 たとえばファイル内からreadline()で読み込んだ文字列が [0, 0] [-0.34063, 0.0756989] [-0.362579, 0.118652] [-0.36264, 0.118637] だったならば 配列内に {0,0,-0.34063,0.0756989,-0.362579,0.118652,-0.36264,0.118637 } のように格納したいのですが可能なんでしょうか? "["や空白のようなものを削除して数字だけを取り出したいのです。 現在はこのようにファイルの文字列を取得しています FileReader fr = new FileReader(inputpath); BufferedReader br = new BufferedReader(fr); String read = br.readLine(); よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVAでエラーがでる。

    JAVA初心者なのですが、下のプログラムは数値を入力して、それを表示させるという簡単なプログラムなのですが、実行すると、 String str = br.readLine(); のbr.readLine();の部分に赤い波線が出て、 「処理されない例外の型 IOException at B.main(B.java:11)」 というエラーが出てしまってこまっています。 参考書のとうりに入力しているのになぜでしょうか? タブやスペースが使えないので見にくくなってしまってすみません。 どなたかJAVAに詳しい方 教えてください。 import java.io.*; public class B { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); System.out.println(num + "が入力されまた。"); } }

    • ベストアンサー
    • Java
  • エラー(互換性の無い型)

    はじめましてsunoftaiyoと申します。このカテゴリでは初めての質問です。 これからどうぞよろしく御願いします。 早速なのですが tokuten.txtという30個の数字が羅列されたテキストを読み込み、合計点と平均点を表示するプログラムについてなのですが import java.io.*; public class yomikomi03 { public static void main(String[] args) throws IOException { try{ BufferedReader br = new BufferedReader(new FileReader("tokuten.txt")); String tokuten[] = new String[29]; String t[] = new String[29]; int a=0; for(int i=0;i<29;i++) { tokuten[i] = br.readLine(); t[i] = Integer.parseInt(tokuten[i]); } for(int j=1;j<29;j++) { a = a + tokuten[j]; } int b = a/30; System.out.println("合計点は" + a); System.out.println("平均点は" + b); } catch(FileNotFoundException e) { System.out.println("ファイルが見つかりません。"); } } } というソースでコンパイルすると yomikomi03.java:14: 互換性のない型 検出値 : int 期待値 : java.lang.String t[i] = Integer.parseInt(tokuten[i]); ^ yomikomi03.java:18: 互換性のない型 検出値 : java.lang.String 期待値 : int a = a + tokuten[j]; ^ とでます。どのように対処すればよいでしょう?

    • ベストアンサー
    • Java
  • プログラムの組み合わせ方

    java初心者です。 2つのプログラムを組み合わせて1つのプログラムにしたいんですが、イマイチ分かりません。 このプログラムと、 import java.io.*; class Hello2 {  public static void main(String[] args) throws IOException {   System.out.println("名前を入力してください");   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   String str = br.readLine();   System.out.println(str + "さん、こんにちは!");  } } このプログラムを、 import java.io.*; class Sanbai{  public static void main(String[] args) throws IOException {   System.out.println("好きな数を入力してください");   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   String str = br.readLine();   int x;   x = Integer.parseInt(str);   System.out.println("あなたの入力した数:" + x);   System.out.println("その3倍の数:" + (x*3));  } } 組み合わせて1つのプログラムにするにはどうしたらいいですか?(>_<)

    • ベストアンサー
    • Java

専門家に質問してみよう