Répertoire courant de l'application [résolu] - Java - Programmation
Marsh Posté le 26-12-2003 à 09:26:08
yo c spi a écrit : Mais il y a forcément un moyen! Lequel? |
Le communiquer à ton appli via une config quelconque ou une propriété système. Il n'y a aucun moyen à priori de savoir où se trouve le répertoire home de l'appli.
La JVM n'a pas cette notion en standard. Elle s'occupe juste de savoir où se trouve les classes qu'elle doit utiliser.
Tu peux faire un truc du genre
Code :
|
et rechopper le directory en question dans l'appli
Code :
|
Marsh Posté le 26-12-2003 à 16:52:49
yo c spi a écrit : |
solution magique: lire la doc des classes qu'on utilise:
1/ essayer http://java.sun.com/j2se/1.4.2/doc [...] rnalForm()
2/ si tu utilises une URL pour ouvrir un fichier, passer une URL au constructeur de ton stream et non un chemin sous forme de String.
Marsh Posté le 26-12-2003 à 21:07:55
String home = System.getProperty("user.dir" ); nerenvoi pas le rep d'ou est lancé l'appli ?
je test et je revien
Marsh Posté le 26-12-2003 à 21:17:30
veryfree a écrit : String home = System.getProperty("user.dir" ); nerenvoi pas le rep d'ou est lancé l'appli ? |
c'est pas ca la question
Marsh Posté le 26-12-2003 à 21:26:00
Citation : Je cherche à récupérer le répertoire d'ou est installé mon appli mais ai quelques petits problèmes. |
l'appli est lancé a partir de la ou elle est installé non
Marsh Posté le 26-12-2003 à 22:08:36
veryfree a écrit :
|
bin non
Marsh Posté le 27-12-2003 à 02:06:15
veryfree a écrit : String home = System.getProperty("user.dir" ); nerenvoi pas le rep d'ou est lancé l'appli ? |
puisque manifestement darklord n'a pas su lire TA question et que tu n'as pas non plus su lire sa reponse: le user.dir renvoie le homedirectory du user qui a lancé l'appli ("/home/veryfree" ou "cdocuments and settings/veryfree", le plus souvent)
Marsh Posté le 27-12-2003 à 02:14:53
non, sinon:
Citation : Pouet.class.getProtectionDomain().getCodeSource().getLocation(); |
permet de récuperer l'emplacement du fichier qui définit la classe Pouet, si ça peut aider. (...getLocation().getFile() pour recuperer le fichier)
à mon avis à n'utiliser qu'en cas d'extreme nécessité, et preferer un concept du style de celui decrit par darklord, à savoir passer un POUET_HOME en param a l'appli.
Marsh Posté le 27-12-2003 à 11:38:55
the real moins moins a écrit : puisque manifestement darklord n'a pas su lire TA question et que tu n'as pas non plus su lire sa reponse: le user.dir renvoie le homedirectory du user qui a lancé l'appli ("/home/veryfree" ou "cdocuments and settings/veryfree", le plus souvent) |
si si j'ai lu sa question, mais comme ca ne correspondait pas à la demande initiale, j'ai simplement dit que ct pas ça
bon ok j'aurai pu développer
Marsh Posté le 27-12-2003 à 14:54:31
the real moins moins a écrit : puisque manifestement darklord n'a pas su lire TA question et que tu n'as pas non plus su lire sa reponse: le user.dir renvoie le homedirectory du user qui a lancé l'appli ("/home/veryfree" ou "cdocuments and settings/veryfree", le plus souvent) |
ca c'est user.home
Marsh Posté le 27-12-2003 à 15:10:29
the real moins moins a écrit : non, sinon:
permet de récuperer l'emplacement du fichier qui définit la classe Pouet, si ça peut aider. (...getLocation().getFile() pour recuperer le fichier) |
Le problème c'est que si le .class est dans un .jar, ça renvoie le path du .jar, ou le path a l'intérieur du .jar ?
Marsh Posté le 27-12-2003 à 17:11:38
R3g a écrit : Le problème c'est que si le .class est dans un .jar, ça renvoie le path du .jar, ou le path a l'intérieur du .jar ? |
le jar ou peut etre si t'es chanceux les deux (....machin.jar!com/pouet/truc/Muche)
Marsh Posté le 27-12-2003 à 17:16:01
the real moins moins a écrit : le jar ou peut etre si t'es chanceux les deux (....machin.jar!com/pouet/truc/Muche) |
Un point d'exclamation Et ça marche comment le jour où y a un ! dans le nom de fichier ?
Marsh Posté le 27-12-2003 à 17:17:59
Taiche a écrit : |
i t'es chanceux j'ai dit. mais jcrois que c pas le cas, il donne que le .jar
le ! je sors ça d'un vague souvenir ou j'ai vu que ça s'écrivait comme ça pour je sais plus quoi.
et le ! etant apres l'extension .jar ça va pas se confondre avec un ! qui serait dans ton nom de fichier
Marsh Posté le 27-12-2003 à 17:21:27
the real moins moins a écrit : i t'es chanceux j'ai dit. mais jcrois que c pas le cas, il donne que le .jar |
et qu'est ce qui se passe si le nom de fichier comporte .jar!
Marsh Posté le 27-12-2003 à 17:21:27
Mettre un fichier machin.jar! dans un classpath, ça marchera pas ?
Marsh Posté le 27-12-2003 à 17:24:21
darklord a écrit : |
ben c'est pas un jar valide
Marsh Posté le 27-12-2003 à 17:24:47
Taiche a écrit : Mettre un fichier machin.jar! dans un classpath, ça marchera pas ? |
si mais il sera sans doute pas considéré comme un jar, au meme titre que si tu mets un moncul.jpg
Marsh Posté le 27-12-2003 à 17:26:21
C'est pas drôle, alors
Marsh Posté le 27-12-2003 à 18:13:27
the real moins moins a écrit : si mais il sera sans doute pas considéré comme un jar, au meme titre que si tu mets un moncul.jpg |
et jar!jar.jar, c'est valide ?
Marsh Posté le 27-12-2003 à 18:27:13
euh c'est quoi la question à la base? si t'as envie de t'amuser à foutre des noms à la con à tes jars pour voir jusqu'ou tu peux aller, libre à toi hein
Marsh Posté le 27-12-2003 à 18:31:02
Taiche a écrit : |
La question c'est ça. Après l'interet est je l'avoue un peu limité, c'est juste que ça semble un peu bizarre..
Marsh Posté le 27-12-2003 à 18:39:43
bah essaie si ça t'interesse
déjà, je pense que la methode que j'ai donnée ne renvoie pas ce genre d'url, mais juste celle du jar, donc...
Marsh Posté le 29-12-2003 à 22:05:34
he, au fait, veryfree avait raison avec user.home !
Marsh Posté le 29-12-2003 à 23:21:03
the real moins moins a écrit : he, au fait, veryfree avait raison avec user.home ! |
voui
meme si ca ne répond pas à la question
Marsh Posté le 29-12-2003 à 23:25:49
bah ça renvoie l'endroit d'ou à été lancée la vm, donc bon, au pire tu fais un "/.." si tu sais que ton appli est lancée dans APPLI_HOME/bin, par exemple.
ça peut etre un méchanisme qui me semble correct, si on l'utilise en "failover" (?) d'une variable "APP_HOME" qui serait passée a l'appli (ie si la variable n'est pas passée, alors on utilise ce procédé par défaut)
Marsh Posté le 29-12-2003 à 23:41:26
ReplyMarsh Posté le 29-12-2003 à 23:51:26
the real moins moins a écrit : bah ça renvoie l'endroit d'ou à été lancée la vm, donc bon, au pire tu fais un "/.." si tu sais que ton appli est lancée dans APPLI_HOME/bin, par exemple. |
ouais si tu as le script qui va bien mais si tu peux lancer l'appli depuis n'importe quel rep ca va pas le faire
Marsh Posté le 29-12-2003 à 23:52:29
darklord a écrit : |
(si t'as un raccourci ou quoi ailleurs, tu crois que le user.home va etre dans le "repertoire de travail" de ce raccourci et non celui ou se trouve ce sur quoi le raccourci pointe?)
Marsh Posté le 30-12-2003 à 00:15:05
ReplyMarsh Posté le 02-01-2004 à 09:49:06
http://forum.hardware.fr/forum2.ph [...] 0&subcat=0
Voir le code posté par "phenixl"
Marsh Posté le 07-01-2004 à 14:41:18
Je vais tester tout ca et je vous redis.
Merci, y'a pas mal de trucs.
Bonne année !
Marsh Posté le 09-01-2004 à 15:43:15
haRICOvert a écrit : http://forum.hardware.fr/forum2.ph [...] 0&subcat=0 |
Ce code est excellent et pourra etre bien utile.
Merci à tous.
Marsh Posté le 26-12-2003 à 02:30:30
Salut,
Je cherche à récupérer le répertoire d'ou est installé mon appli mais ai quelques petits problèmes.
La commande
File f = new File("." );
renvoie le répertoire d'ou est lancée l'appli et non pas le répertoire ou elle est.
Enfin j'ai trouvé :
String curdir = this.class.getResource("." ).getPath();
Mais autre problème : vu que je passe par la classe java
.net.URL, si mon chemin comportait des caractères spéciaux, ils sont remplacés et le chemin n'est donc plus valide.
Exemple : "c:\Mes Documents" devient "c:\Mes%20Documents"
ce qui est très génant (FileNotFoundException).
Les quelques topics que j'ai vu la dessus cse terminait par "Dieu seul sait ou est l'appli" (pas très encourageant).
Mais il y a forcément un moyen! Lequel?
Edit : j'ai oublié : JOYEUX NOEL !!!!!!!!!
Message édité par yo c spi le 09-01-2004 à 15:43:58