FileNotFoundException lorsque le fichier existe avec toutes les autorisations
Je suis en train de lire un fichier et le message d'erreur que j'obtiens 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)
toutefois, le fichier n'existe pas et juste pour vérifier, je l'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 me fais de la fondation friedrich naumann exception?
Grâce
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 de lit:
raise_ratio=4
Cela a été testé sous windows (avec un diff pathToConfiguration (qui est passé dans le constructeur)) et fonctionne très bien.
Ajouté dans les vérifications suivantes 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 comme suit:
file doesn't exist
/homes/at1106/fourthYearComputing/Individual-Project/svn-workspace/trunk/Individual_Project/src/game/player/gametheoryagent/configurations/gameTheoryAgentConfiguration.properties
source d'informationauteur Aly
Vous devez vous connecter pour publier un commentaire.
Selon les premiers stacktrace il semble y avoir deux espaces entre le nom de fichier et la raison:
Ce serait de m'indiquer que le nom de fichier a peut-être une fuite de l'espace. Pouvez-vous vérifier votre pathToConfiguration variable par:
À vérifier que le chemin est ce que vous pensez que c'est?
Je suppose que vous avez vérifié le chemin plus d'une fois, et comme vous le dites vous exécutez l'application sur la même machine où le code réside.
Pourrait-il être qu'il y a quelque obscure NFS/serveur de fichiers supports qui ne sont valables que pour le shell de login, mais pas pour les applications?
Essayez de copier le fichier dans votre $HOME et voir si cela fonctionne.
Ce qui est délivrée si vous écrivez ceci:
System.out.println(new File(".").getAbsolutePath());
quel est votre répertoire courant?
Lorsque vous exécutez votre programme java vous êtes sous le même utilisateur que lorsque vous exécutez la ligne de commande de chèques?
MODIFIER: Essayez de copier le fichier dans le répertoire où vous exécutez votre programme de et voir si elle est capable de le lire. Vous pouvez également essayer les opérations suivantes après avoir copié le fichier dans votre dossier d'exécution:
(en supposant que vous avez "." dans votre classpath)