2011-04-16 5 views
0

Je veux exécuter un programme java (jar) dans un autre terminal sous Linux. Voici mon code:Exécution exec sous Linux

import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.OutputStreamWriter; 

public class Launcher 
{ 
    public static void main(String[] args) 
    { 
      try 
      { 
       Thread.sleep(6000); 
       Process p; 

       if(System.getProperty("os.name").toLowerCase().contains("win")) 
       { 
        BufferedWriter bw; 
        p = Runtime.getRuntime().exec("cmd.exe /c start java -Xms512M -Xmx512M -jar craftbukkit.jar"); 
        bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream())); 
        bw.write(launcher + "\r\n"); 
        bw.flush(); 
       } 
       else 
       { 
        Runtime.getRuntime().exec(launcher); 
       } 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
     } 
    } 
} 

Sur Windows, il n'y a pas de problème, le pot est lancé dans une autre console. Mais sur Linux, le fichier jar est lancé en arrière-plan et pas dans un autre terminal.

Thx pour de l'aide!

+0

Et qu'est-ce que "autre terminal" de toute façon?/dev/ttyN? De nombreuses installations Linux s'exécutent sans interface graphique. –

Répondre

1

Cela dépend de la distribution Linux et de l'environnement de bureau choisi par l'utilisateur.

Vous devez déterminer quel émulateur de console/terminal vous utilisez, regardez ses options de ligne de commande et trouvez celle qui vous permet de spécifier une commande à exécuter. Par exemple:

  • gnome-terminal -e "some command" fonctionne some command dans une nouvelle console, la fermeture de la console lorsque la commande se termine.

  • gnome-terminal -e "bash -c \"some command" ; sleep 10\" exécute some command dans une nouvelle console, en attente de 10 secondes avant la fermeture.

Autres émulateurs de console/terminal font probablement différemment ...

La dernière étape consiste à utiliser Runtime.exec(...) ou ProcessBuilder et amis pour assembler la commande composite.

+0

... et n'oubliez pas que l'environnement de bureau peut ne pas être là du tout. –

Questions connexes