10

ファイルを読み込もうとしていますが、エラーが発生します

java.io.FileNotFoundException: /homes/at1106/fourthYearComputing/Individual-Project/svn-workspace/trunk/Individual_Project/src/game/player/gametheoryagent/configurations/gameTheoryAgentConfiguration.properties  (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at game.player.gametheoryagent.GameTheoryAgent.<init>(GameTheoryAgent.java:67)
        at simulation.Simulator.createPlayer(Simulator.java:141)
        at simulation.Simulator.main(Simulator.java:64)

ただし、ファイルは存在し、以下に示すように、再確認するために777のアクセス許可を付与しました。

tui% cd /homes/at1106/fourthYearComputing/Individual-Project/svn-workspace/trunk/Individual_Project/src/game/player/gametheoryagent/configurations
tui% ls -al
total 4
drwxrwxrwx 3 at1106 cs4 1024 2010-02-22 17:45 .
drwxrwxrwx 4 at1106 cs4 1024 2010-02-22 17:27 ..
-rwxrwxrwx 1 at1106 cs4  260 2010-02-22 17:31 gameTheoryAgentConfiguration.properties
drwxrwxrwx 6 at1106 cs4 1024 2010-02-22 17:41 .svn

FNF例外が発生する理由について何か考えはありますか?

ありがとう

呼び出しを行うJavaコード:

File file = new File(pathToConfiguration)
   Properties configuration = new Properties();
    try{
        configuration.load(new FileInputStream(file));
        int RAISE_RATIO = Integer.parseInt(configuration.getProperty("raise_ratio"));
    }
    catch(IOException event){
        System.err.println("Error in reading configuration file " + pathToConfiguration);
        event.printStackTrace();    
  }

プロパティファイルには次のように記述されています。

raise_ratio=4

これはWindowsでテストされ(diff pathToConfiguration(コンストラクターに渡されます))、正常に動作します。

Catchブロックの次のチェックに追加されました

        if(file.exists()){
            System.out.println("file exists");
        }
        else{
            System.out.println("file doesn't exist");
        }

        System.out.println(file.getAbsolutePath());
        if(file.canRead()){
            System.out.println("can read");
        }
        if(file.canWrite()){
            System.out.println("can write");
        }

出力は次のとおりです。

file doesn't exist
/homes/at1106/fourthYearComputing/Individual-Project/svn-workspace/trunk/Individual_Project/src/game/player/gametheoryagent/configurations/gameTheoryAgentConfiguration.properties
4

4 に答える 4

21

最初のスタックトレースによると、ファイル名と理由の間に2つのスペースがあるようです。

FileNotFoundException: ...Configuration.properties  (No such file or directory)
--------------------------------------------------^^

これは、ファイル名の末尾にスペースが含まれている可能性があることを示しています。次の方法でpathToConfiguration変数を再確認できますか?

System.out.println("[" + pathToConfiguration + "]");

パスがあなたが思っているものであることを再確認するには?

于 2010-02-22T18:53:05.253 に答える
0

Javaプログラムを実行するとき、コマンドラインチェックを実行するときと同じ「ユーザー」として実行していますか?

編集:プログラムを実行しているディレクトリにファイルをコピーして、ファイルが読み取れるかどうかを確認してください。ファイルを実行ディレクトリにコピーした後、次のことを試すこともできます。

InputStream in = getClass().getResourceAsStream("/gameTheoryAgentConfiguration.properties");
configuration.load(in);

(クラスパスに「。」があると仮定します)

于 2010-02-22T18:18:08.863 に答える
0

パス名を複数回再確認し、コードが存在するのと同じマシンでアプリを実行していると思います。

ログインシェルに対してのみ有効で、アプリケーションに対しては有効ではない、あいまいなNFS /ファイルサーバーマウントがいくつかある可能性がありますか?

$ HOMEにあるファイルをコピーして、機能するかどうかを確認してください。

于 2010-02-22T18:25:01.440 に答える
0

これを書くと何が出力されますか:

System.out.println(new File(".").getAbsolutePath());

現在のディレクトリは何ですか?

于 2010-02-22T18:37:08.780 に答える