Utiliser chemin relatif
Résoluvoila mon PB,
j'utilise un chemin absolue pour appeler un exe en cliquant sur un jbutton cependant, j'aimerais pouvoir l’appeler avec un chemin relatif
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+"D:\\Program Files\\mon fichier\\mon fichier.exe");
pour pouvoir lancer l'exe quelque soit le disque sur lequel il est enregistrer ( C ou D)
car lors d'une installation , on ne sait pas ou le programme va s'installer par défaut et un chemin absolue ne fonctionnera donc pas
mais je ne trouve aucune solution qui fonctionne réellement sur d'autres forums
Merci d'avance pour votre aide
4 réponses
Le problème porte sur l'utilisation d'un chemin relatif pour lancer un fichier exécutable avec Runtime.getRuntime().exec en Java afin de rester indépendant du disque d'installation lors de l'installation sur différents postes. Plusieurs réponses préconisent d'obtenir un chemin relatif fiable en Java via getAbsolutePath() ou getCanonicalPath(), puis d'utiliser ce chemin consolidé avec Runtime.getRuntime().exec et de vérifier le répertoire courant ou le classpath. D'autres explications indiquent que classpath influence la résolution des fichiers relatifs: le fichier recherché peut être situé dans un des dossiers du classpath, le premier fichier existant étant utilisé. En pratique, la solution consiste à calculer le chemin relatif depuis le répertoire du fichier exécutant ou du jar, en utilisant des méthodes comme getCanonicalPath, puis d'appeler l'exécutable avec ce chemin.
-
Bonjour,
throw new IOException(
"Cannot run program \"" + prog + "\""
+ (dir == null ? "" : " (in directory \"" + dir + "\")")
+ exceptionInfo,
cause);
}
}
Que puis-je faire avec cette fonction svp ( que fait-elle )?
merci-
ModérateurQuel rapport avec le reste de ton problème ?
Voir la documentation :
https://docs.oracle.com/javase/tutorial/essential/exceptions/throwing.html -
-
Modérateur@ffDans le lien que tu donnes tu as déjà la réponse à ta question...
import java.io.File; public class PathTesting { public static void main(String [] args) { File f = new File("test/.././file.txt"); System.out.println(f.getPath()); System.out.println(f.getAbsolutePath()); try { System.out.println(f.getCanonicalPath()); } catch(Exception e) {} } }test\..\.\file.txt
C:\projects\sandbox\trunk\test\..\.\file.txt
C:\projects\sandbox\trunk\file.txt -
Et donc je mets tout cela dans mon jbutton ?
import java.io.File;
public class PathTesting {
public static void main(String [] args) {
File f = new File("test/.././file.txt");
System.out.println(f.getPath());
System.out.println(f.getAbsolutePath());
try {
System.out.println(f.getCanonicalPath());
}
catch(Exception e) {}
}
}
ou cela ?:mport java.io.File;
File f = new File("test/.././file.txt");
System.out.println(f.getPath());
System.out.println(f.getAbsolutePath());
try {
System.out.println(f.getCanonicalPath());
}
catch(Exception e) {}
Ou puis-je utiliser cela (cela fonctionne?) :
throw new IOException(
"Cannot run program \"" + prog + "\""
+ (dir == null ? "" : " (in directory \"" + dir + "\")")
+ exceptionInfo,
cause);
}
}
encore merci pour votre aide -
File f = new File("fichier.exe");
System.out.println(f.getPath());
System.out.println(f.getAbsolutePath());
try {
System.out.println(f.getCanonicalPath());
}
catch(Exception e) {}
reBonjour, cela m'indique bien un chemin mais n'execute pas
mon programme,par ailleurs , ce dernier m'indique un chemin different de celui ou ce trouve le fichier :
D:\Users\admin\Documents\NetBeansProjectsMBF\JavaApplication7\fichier.exe
Au lieu de :
C:\ mon fichier\mon fichier.exe
maintenant ,j'aimerais qu'il puisse s’exécuter , comment pourrais-je faire pour que quand je click sur le bouton , le programme s'execute SVP ?
que dois-je faire SVP ?
Merci
-