Utiliser chemin relatif

Résolu
ff -  
 ff -
Salut a tous ,
voila 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

Résumé de la discussion

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.

Bobot (l'IA à votre service)
  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833
     
    Bonjour,

    Pour récupérer le chemin de ton appli java, tu dois pouvoir utiliser une fonction du genre getAbsolutePath() ou getCanonicalPath()

    Par exemple :
    File directory = new File (".");
    System.out.println ("Current directory's canonical path: " +     directory.getCanonicalPath());
    System.out.println ("Current directory's absolute  path: " + directory.getAbsolutePath());
    

    1
    1. ff
       
      Salut et merci de m'avoir répondu
      je dois donc mettre mon chemin d’accès dedans seulement:

      File directory = new File ("./ Program Files/mon fichier/fichier .exe");

      car cela ne marche pas

      sinon j'ai trouver aussi cela mais il ne marche pas non plus :

      String path=new File(".Program Files/mon fichier/fichier .exe").getAbsolutePath()

      merci
      0