Beaucoup de gens ont le problème que quand ils commencent à partir de nautilus une application JAR, que le CWD (Current Working Directory) est défini dans leur dossier de base (et non le dossier dans lequel le JAR est). C'est un bug dans Nautilus, pas spécialement Linux.Java + Linux: Répertoire de travail est mon dossier de base
Si vous connaissez une astuce pour faciliter le démarrage d'un Jar au lieu d'ouvrir un terminal et d'y entrer manuellement java -jar myJar.jar
, veuillez l'indiquer ci-dessous.
Merci
Un court exemple de code du problème:
File f = new File("ASimpleTextFile.txt");
System.out.println(f.getAbsolutePath());
Sous Windows, cette impression: [The Path To The Jar]/ASimpleTextFile.txt
Mais sous Linux, il imprime: /home/[yourName]/ASimpleTextFile.txt
C'est une très mauvaise idée car nous utilisons souvent des chemins relatifs aux fichiers de configuration. De cette façon, ils ne seront pas trouvés, car le fichier pointe vers le dossier homefolder.
De quelle manière votre programme Java utilise-t-il le répertoire courant? Vous ne pouvez même pas faire 'chdir' en Java, donc, l'idée est que votre programme devrait être cwd-agnostique. –
@Chris: Pas du tout vrai; J'utilise souvent le répertoire courant pour écrire des données, exigeant que l'utilisateur configure l'application pour que le répertoire actuel soit là où il veut écrire les données. –
@Software Monkey: c'est une approche judicieuse lorsque votre application est une application de ligne de commande. Mais pour une application d'interface utilisateur, il ne devrait y avoir aucune dépendance sur le répertoire en cours (sauf peut-être en tant que l'emplacement par défaut des boîtes de dialogue d'ouverture de fichier ou des choses similaires). –