4

のEclipse(インディゴ)の次のJava 6のコードを実行しているとき、私はFileNotFoundExceptionをを取得していますとEclipseでスキャナを作成する場合:例外がにFileNotFoundExceptionは、Snow Leopardの上のJava

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Unhandled exception type FileNotFoundException 

    at readFile.main(readFile.java:9) 
import java.io.*; 
import java.util.*; 

public class readFile { 

    public static void main(String[] args) { 

     Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt")); // Line 9 

    } 
} 

ある

私の現在のワークスペースは/ Users/daniel/pr/javaです。これは、1つのプロジェクトだけ(readFileの)が含まれ、およびファイルの階層構造は、次のようになります、私はこのプロジェクトにmyfile.txtののコピーを置く

  • 試したいくつかの非常によく似た質問を読んだ後

    - readFile 
        - src 
         - (default package) 
          - readFile.java 
        - JRE System Library [JavaSE-1.6] 
        - myfile.txt 
    

    、ビン、SRC、およびワークスペースディレクトリだけでなく、私の自宅とルートフォルダ

  • 作業ディレクトリを特定し、相対パスを使用して
  • 手動でのEclipseで「実行構成>引数>作業ディレクトリ」を介してワークスペースを設定
  • bin、readFile、src、およびjavaディレクトリのコマンドラインJavaランチャーでプログラムを実行します(これらの場所にmyfile.txtのコピーがあります)
  • ファイル拡張子を削除したりファイル名を長くしたりします)と、
  • のmyfile.txtのパーミッションを確認しています(今はrw-r - r--です)。

私は迷っています。何が問題なの? (ありがとうございます!)

答えて

4

例外はあなたに問題を伝えます。

、いずれか、その例外がスローされることをメソッドのシグネチャで宣言することにより、または試みでコードを囲むことにより、あなたはあなたのコードでそれを考慮する必要がありますので、にFileNotFoundExceptionをスローする可能性がありますあなたのメインを持っているコードキャッチ:

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

    Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt")); // Line 9 

} 

かのtry/catchを使用して

public static void main(String[] args) { 
    try { 
     Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt")); // Line 9 
    } catch (FileNotFoundException e) { 
     //do something with e, or handle this case 
    } 
} 

:宣言

これらの2つのアプローチの違いは、これがメインなので、メソッドシグネチャで宣言すると、プログラムは例外をスローしてスタックトレースを提供して停止します。

あなたはのtry/catchを使用する場合は、この状況に対処することができますが、どちらかのエラーをログに記録することにより、再試行など

あなたは見て与えたいと思うかもしれません:Javaでの例外処理について学ぶために http://docs.oracle.com/javase/tutorial/essential/exceptions/それはかなり役に立ちます。

+0

2番目の方法で「スロー」が必要ですか? – NominSim

+1

Ups!最初からコピー/貼り付け...固定!ありがとう。 – pcalcao

4

FileNotFoundExceptionは例外です!あなたは例外をキャッチする必要があります...

public static void main(String[] args) { 
    try { 
     Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt")); // Line 9 
    } catch(FileNotFoundException ex) { 
     //Handle exception code ... 
    } 
} 
+0

。ありがとうございました! :) –

2
"/Users/daniel/pr/java/readFile/myfile.txt" 

は、それはすべきではありません:

それをやった
"https://stackoverflow.com/users/daniel/pr/java/readFile/myfile.txt" 
+0

ユーザディレクトリはMacで大文字になります。しかし、他人にはないかもしれない。 –

関連する問題