Utiliser chemin relatif

Résolu
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. 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
    0
    1. Bonjour ,

      voila ce que je cherche à obtenir:

      https://stackoverflow.com/questions/1099300/whats-the-difference-between-getpath-getabsolutepath-and-getcanonicalpath

      En fait, je cherche à obtenir dynamiquement le chemin en dur de mon exe et donc le lancer partout .

      Merci
      0
    2. 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
      0
    3. 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
      0
    4.  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
      0