[Java]Lancer un .bat à l'intérieur d'un .jar

kkw3t -  
 kkw3t -
Bonjour,

Je suis à la recherche d'une aide à propos de mon code java. Je voudrais que le code lance un exécutable .bat qui se trouve à l'intérieur du .jar. Je précise que ce code java est en fait un plugin Bukkit pour Minecraft.

Merci d'avance pour vos réponses

6 réponses

  1. demondu36 Messages postés 1369 Statut Membre 243
     
    Salut,

    Code : 
    import java.io.*; 
    public class Launcher2 { 
        public static void main(String[] args) { 
            try { 
        
                String[] command = { "cmd.exe", "/C", "Start", "C://run.bat" }  
                Process child = Runtime.getRuntime().exec(command);  
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
        } 
    }


    Il te suffit juste te remplacer par tes fichiers ...
    3
  2. kkw3t
     
    Je laisse ce chemin, ou je mets le chemin du .jar ?
    Par exemple : C:/Users/moi/plugin.jar/start.bat ?

    Sinon, merci de ta réponse rapide
    0
  3. demondu36 Messages postés 1369 Statut Membre 243
     
    essaye les deux manieres je ne sais pas si sa va le perturber ou pas ...
    0
  4. kkw3t
     
    Merci beaucoup pour ta réponse, en fait la solution était
    String[] commande = { "cmd.exe", "/C", "start", "Start.bat" };
              	Runtime r = Runtime.getRuntime();
               Process p = r.exec(commande);  
               p.waitFor();
    


    Une dernière question, comment envoyer la même commande, mais avec un OS linux ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. KX Messages postés 19031 Statut Modérateur 3 020
     
    Au lieu de faire String[] commande = { "cmd.exe", "/C", "start", "Start.bat" };
    Tu peux "directement" faire String[] commande = { "Start.bat" };

    Comme ça c'est compatible avec Linux (sous réserve que le fichier .bat soit compatible)

    Par contre, pour accéder au fichier qui est dans le JAR, c'est plus compliqué.
    Je pense que le plus simple c'est de l'extraire dans un fichier temporaire avant de l'exécuter.
    0
  7. kkw3t
     
    Justement, ma méthode a fonctionné. Mais je vais tester la tienne, vu que le .bat et le .sh sont dans le .jar. J'explique en vitesse. En fait je veux que si le serveur tourne sous linux, il lance le .sh, sinon, s'il est en windows, il lance le .bat.

    Regardez :
     if(isWindows())
               {
               
               String[] commande = { "cmd.exe", "/C", "start", "Start.bat" };
              	Runtime r = Runtime.getRuntime();
               Process p = r.exec(commande);  
               p.waitFor();
               
               }
               else if(isUnix())
               {
            	   
            	   String[] commande = {//La commande que je chercher};
                 	Runtime r = Runtime.getRuntime();
                  Process p = r.exec(commande);
                  p.waitFor();
               }
               else
               {
            	   log.info("Systeme d\'exploitation inconnu");
               }


    Les méthodes sont :
     
    public static boolean isUnix() {
    		 
    		String os = System.getProperty("os.name").toLowerCase();
    		// linux ou unix
    		return (os.indexOf("nix") >= 0 || os.indexOf("nux") >= 0);
     
    	}
    		//Windows
    public static boolean isWindows() {
    		 
    		String os = System.getProperty("os.name").toLowerCase();
    		// windows
    		return (os.indexOf("win") >= 0);
     
    	}
    


    En sachant que le .sh et le .bat sont situés à la racine : plugin.jar/Start.bat et plugin.jar/Start.sh

    Merci d'avance pour vos réponses
    0