2017-05-14 1 views
0

réel Objectif: créer un programme qui appelle d'autres programmes (exercices de laboratoire)fichier .java pour exécuter un autre .java (cadres) par le processus

Objectif actuel: Faire Main.java run lab4 un programme GUI (Lab4Ans201506159.java - le nom du fichier)

Lab4Form et Lab4Intro sont des formes

voici le code Main.java

public class Main { 
public static void main(String[] args) throws IOException { 
    // TODO code application logic here 
    Process p,p2,p3,p4; 
    p = Runtime.getRuntime().exec("javac Lab4Ans201506159.java"); 
    //p3 = Runtime.getRuntime().exec("javac Lab4Ans201506159Form.java"); 
    //p4 = Runtime.getRuntime().exec("javac Lab4Ans201506159Intro.java"); 
    p2 = Runtime.getRuntime().exec("java Lab4Ans201506159"); 
    //p2 = Runtime.getRuntime().exec("Lab4Ans201506159"); 
} 

et est ici le code lab4

Lab4Form et Lab4Intro sont Cadres

ce que lab4 essaie de faire afficher Lab4Intro, et quand il est fermé, Lab4Form serait visible

public class Lab4Ans201506159 { 
public static void main(String[] args) throws InterruptedException { 
    Lab4Ans201506159Intro intro = new Lab4Ans201506159Intro(); 
    intro.setLocationRelativeTo(null); 
    intro.setVisible(true); 

    Thread.sleep(2000); 
    //Lab4Ans201506159Form form = new Lab4Ans201506159Form(); 
    while(intro.isActive()) 
    { 
    } 

    if(intro.isActive() == false){ 
     Lab4Ans201506159Form form = new Lab4Ans201506159Form(); 
      form.setLocationRelativeTo(null); 
      form.setVisible(true); 
    } 

} 

Problème: L'exécution Main.java se traduira par un " BUILD SUCCESSFUL "dans le compilateur mais aucune interface graphique n'est affichée. J'ai besoin de réponses pourquoi il ne s'affiche pas ou ne fonctionne pas.

Répondre

0

Je soupçonne que le premier processus est exécuté, afin d'être sûr, avez-vous déjà essayé de rediriger la sortie de Runtime.exec vers la sortie standard

quelque chose comme ça:

public static void main(String[] args) throws Exception { 
     System.setOut(new PrintStream(new FileOutputStream("log.txt"))); 
     System.out.println("Init..."); 

     try { 
      String line; 
      Process p = Runtime.getRuntime().exec("javac Lab4Ans201506159.java"); 

      BufferedReader in = new BufferedReader(
        new InputStreamReader(p.getInputStream())); 
      while ((line = in.readLine()) != null) { 
      System.out.println(line); 
      } 
      in.close(); 
     } 
     Thread.sleep(1000); 

     Process p2 = Runtime.getRuntime().exec("java Lab4Ans201506159"); 

     BufferedReader in2 = new BufferedReader(
        new InputStreamReader(p2.getInputStream())); 
      while ((line = in2.readLine()) != null) { 
      System.out.println(line); 
      } 
      in2.close(); 
     } 


     catch (Throwable e) { 
      e.printStacktrace(); 
     } 
    } 

comme ça vous pouvez vérifier ce qui ne va pas ... bonne chance

+0

Ce code affiche uniquement "Init ..." dans log.txt. Qu'est-ce que ça veut dire? – iambuzzify

+0

Je suppose que cela signifie qu'il n'y a pas d'erreurs non? Mais il n'affiche toujours pas l'interface graphique qu'il devrait afficher. – iambuzzify

+0

Quel système d'exploitation utilisez-vous? en se basant sur le système d'exploitation que vous utilisez vous avez une option différente jetez un oeil ici: http://www.rgagnon.com/javadetails/java-0014.html – navy1978

0

J'ai réussi à terminer mon objectif final qui est d'ouvrir Lab4. J'ai en quelque sorte pris une méthode différente. Je soupçonne l'une des raisons pour lesquelles cela ne fonctionne pas parce que mon chemin de classe a dû se tromper. Je pourrais dire cela parce que je ne peux pas compiler (javac) dans CMD Prompt. J'ai donc corrigé cela, puis j'ai nettoyé et construit (en utilisant Netbeans) le projet (lab4, intro, form). Après cela, dans la dernière ligne du compilateur, il y aura une ligne comme "java -jar C: \ sdfsafs \ blablabal". C'était la ligne que j'ai utilisée dans runtime.exec() et ça a finalement marché.

public static void main(String[] args) throws Exception { 

try { 
    runProcess("java -jar \"C:\\Users\\Aldrin\\Desktop\\201506159AnsLab4\\dist\\201506159AnsLab4.jar\""); 
    //runProcess("dir"); 
    //runProcess("java Lab4Ans201506159"); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
} 

Je n'ai toujours pas répondu pourquoi le code d'origine ne fonctionne pas.