Question

    

Cette question a déjà une réponse ici:

         

Je suis en train de lire un fichier et l'erreur que je reçois est

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)

mais le fichier existe et juste vérifier que je lui ai donné 777 autorisations, comme indiqué ci-dessous:

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

Toutes les idées pour lesquelles je reçois l'exception FNF?

Merci

code java qui fait l'appel:

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();    
  }

Le fichier de propriétés se lit comme suit:

raise_ratio=4

Cela a été testé dans les fenêtres (avec un pathToConfiguration diff (qui est passée dans le constructeur)) et fonctionne très bien.

Ajout dans les contrôles suivants dans le bloc 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");
        }

la sortie est la suivante:

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

La solution

Selon le stacktrace initial, il semble y avoir deux espaces entre le nom du fichier et de la raison:

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

Cela me indique que le nom de fichier a peut-être un espace de fuite. Pouvez-vous revérifier votre variable pathToConfiguration par:

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

Pour vérifier que le chemin est ce que vous pensez qu'il est?

Autres conseils

Je suppose que vous revérifié le chemin plus d'une fois, et que vous dites que vous exécutez l'application sur la même machine où le code réside.

Se pourrait-il qu'il ya des obscurs supports du serveur NFS / de fichiers qui ne sont valables que pour le shell de connexion, mais pas pour les applications?

Essayez de copier le fichier dans votre répertoire $ HOME et voir si cela fonctionne.

Ce qui est si vous écrivez en sortie ceci:

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

quel est votre répertoire courant?

Lorsque vous exécutez votre programme java vous utilisez comme le même « utilisateur » que lorsque vous exécutez les contrôles de ligne de commande?

EDIT : Essayez de copier le fichier dans le répertoire où vous exécutez votre programme à partir et voir si elle est capable de le lire. Vous pouvez également essayer ce qui suit après avoir copié le fichier dans votre répertoire d'exécution:

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

(en supposant que vous avez "" dans votre classpath)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top