changer le PATH dans le code - Java - Programmation
Marsh Posté le 10-11-2005 à 19:33:48
saha54 a écrit : est-ce que quelqu'un connaît un moyen de changer le path dans le programme à l'aide d'une méthode ou d'un constructeur? |
ca sert à quoi??
Si tu connais le nouveau PATH que tu vx mettre ds ton prog, alors ds ce cas, tu n'as justement pas besoin d'un PATH; le PATH c'est l'arborescence ou chercher qqch qd on ne le trouve pas ds le rep par défaut.
Si tu précisais le PATH de quoi, d'ailleurs, ça aiderait, CLASSPATH?
Marsh Posté le 14-11-2005 à 09:01:45
le problème est que j'ai des contraintes de noms de dossiers d'images par exemple, et que je veux éviter de mettre des bouts de chemins en dur dans mon code. Le fait de charger le path uniquement au lancement du programme m'oblige à changer la structure de mon architecture en dessous. Le charger dynamiquement m'enlève cette contrainte.
De plus, cela m'impose d'avoir des .Class de noms unique.
Marsh Posté le 14-11-2005 à 12:58:22
saha54 a écrit : le problème est que j'ai des contraintes de noms de dossiers d'images par exemple, et que je veux éviter de mettre des bouts de chemins en dur dans mon code. Le fait de charger le path uniquement au lancement du programme m'oblige à changer la structure de mon architecture en dessous. Le charger dynamiquement m'enlève cette contrainte. |
Je suis vraiment pas sur d'avoir bien compris.
Peut-être tu dois mettre ton 'Path' dans un fichier de config externe, xml ou autre, et à partir de là, tu peux essayer de reconstruire tes noms de classes avec l'une des classes System, Class ou ClassLoader en chargeant dynamiquement tes classes.
Autrement qq chose de + simple serait pt-être de faire un fichier de config avec cette fois toute ton arborescence, et dans ton code, tu utilises des variables qui seront initialisées avec le fichier de config.
Marsh Posté le 14-11-2005 à 13:51:55
Tu peux changer le classpath, il te suffit de modifier la propriete systeme 'java.class.path'. Tu peux aussi utiliser un URLClassLoader.
Marsh Posté le 14-11-2005 à 15:03:15
j'ai effectivement utlisé le ClassLoader : voici le bout de code.
ExtendableClassLoader ec = new ExtendableClassLoader();
ec.addClassPath("dossier1" );
ec.loadClass("Test" );
Class test = Class.forName("Test",true,ec);
Object obj = test.newInstance();
ExtendableClassLoader ec2 = new ExtendableClassLoader();
ec2.addClassPath("dossier2" );
ec2.loadClass("Test" );
Class test2 = Class.forName("Test",true,ec2);
Object obj2 = test2.newInstance();
Le problème est que si j'ai 2 .class ayant le même nom dans deux dossiers différents (ce qui est le cas ici), et que je fasse appel à ces .class via deux classLoader différents, il prend en compte le premier à chaque fois.
Marsh Posté le 14-11-2005 à 15:16:37
c'est bon ça marche !!
je ne sais pas pourquoi ça ne marchait pas avant, je n'ai pourtant rien changé. Mais bon, le principal est qu'il prenne en compte les path du XXClassLoader.
Marsh Posté le 10-11-2005 à 14:45:51
est-ce que quelqu'un connaît un moyen de changer le path dans le programme à l'aide d'une méthode ou d'un constructeur?
Merci.