2012-01-29 16 views
3

私はプログラミングの世界が新しく、ファイルから単一の数値を読み込んで出力する簡単なプログラムを実行しようとしています。私はコード内のすべてを正しく設定していると信じています。プログラムにファイルを読み込ませるには、.txtファイルの場所に特別な処理をする必要がありますか?JavaのEclipseエラー 'ソースが見つかりませんでした。'

package pack; 

import java.util.*; 

import java.io.*; 

public class Ch2_PrExercise17 { 

    public static void main(String[] args) 
      throws FileNotFoundException{ 

     Scanner inFile = new Scanner(new FileReader("inData.txt")); 
     int num1; 
     num1 = inFile.nextInt(); 
     System.out.println(num1); 
    } 
} 

例外は次のとおりです。

Exception in thread "main" java.io.FileNotFoundException: inData.txt (The system cannot find the file specified) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileReader.<init>(Unknown Source) 
    at pack.Ch2_PrExercise17.main(Ch2_PrExercise17.java:8) 
+0

クラスファイル「Ch2_PrExercise17」と同じディレクトリにある必要があります –

+2

「ソースが見つかりません」というエラーメッセージが表示された場合は、ビルドパスを確認してください。あなたのプロジェクト(左側)を右クリックし、 "build path"項目を選択し、実際のソースファイル(CH2_PrExercise17.java)がソースディレクトリにあることを確認してください。 – bdares

+0

また、FileReaderのDEBUGステートメントが表示されるようにログレベルを十分に高くしてください。 FileReaderがファイルがどこにあると思うかを教えてくれる良い機会があります。これは、ファイルを再配置したり、ファイルパスを調整したりするのに役立ちます。 :) – jmort253

答えて

2

Eclipseが本当に「ソースが見つかりません」と言っている場合は、何かのソースコードについて(その時点で)話しています。

Eclipseからクラスを実行することを管理している場合、Eclipseはそれをコンパイルすることができたので、ソースコードの場所を知ることができます。だから、他のもののソースコードでなければならない。私の推測では、標準のJavaクラスライブラリのソースコードを見つけることができず、おそらくEclipseがJDKインストールではなくJREインストールで実行されているということです。

(私の理論が正しければ、その後、「ソースが見つかりません」のテキストは、例外スタックトレースに組み込まれている...)

また、ビルドの問題かもしれないが、私はそれを疑う、クラスがwasnかの理由eclipseでソースファイルを表示するとエラーマーカーが表示され、Eclipseを実行しようとするとEclipseがエラーを表示します。また、ソースファイルが間違ったディレクトリにあると、Eclipseからもエラーが表示されます。


問題の第二部は、アプリケーションが"inData.txt"ファイルを見つけるためになっています。それは簡単でなければなりません。相対パス名でファイルを開こうとすると、Javaライブラリはアプリケーションの「現在のディレクトリ」に相対的なパス名を解決しようとします。デフォルトでは、Eclipseからアプリケーションを実行すると、これはEclipseを起動したときのシェルのディレクトリになります。例えば

$ cd /home/josh/somedir 
$ eclipse & 

...デフォルトのカレントディレクトリは "/ home/josh/somedir"です。

デフォルトカレントディレクトリが正しくない場合は、を含め、多くのオプションを持っている:

  • ディレクトリを変更してEclipseを起動する前に正しいものに。
  • Eclipseの "Run Configurations"パネルを使用して、アプリケーションの起動設定を選択し、ランチャーの現在のディレクトリ設定を変更します。
  • ソースコードの相対パス名をファイルの正しい絶対パス名に変更します。

フォローアップ

Exception in thread "main" java.io.FileNotFoundException: inData.txt (The system cannot find the file specified) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileReader.<init>(Unknown Source) 
    at pack.Ch2_PrExercise17.main(Ch2_PrExercise17.java:8) 

「不明なソース」のメッセージは、JVMが(Eclipseのではない)、それは完全なスタックトレースを生成するために必要な情報を見つけることができないということを意味します。デバッグ情報を取り除いた "rt.jar"ファイルを使用して実行されているようです。この問題を無視することはできますが、JVMの使用状況と "rt.jar"にデバッグ情報がない理由を調べる必要があります。

実際の問題はFileNotFoundException例外で、私の診断は(上記のように)立っています。 "カレントディレクトリ"は、その相対パス名が解決するために必要なものではありません。可能な解決法については上記を参照してください。

関連する問題