2014-05-12 4 views
-1

Je suis nouveau à la programmation et je voudrais compiler et exécuter un fichier java externe, qui ressemble à ceci:Comment exécuter et compiler correctement un fichier source Java externe?

import java.util.Scanner; 
public class Test{ 
    public static int spr1; 
    private int spr2; 
    public static void main(String[]args){ 
     System.out.println("Hello world"); 
      Scanner sc = new Scanner(System.in); 
      System.out.println(sc.nextInt()); 
    } 
} 

est-il un moyen simple (par exemple avec ProcessBuilder) pour exécuter ce programme et imprimer un entier de l'entrée? Peut-être que je n'étais pas assez clair: Je voudrais exécuter un programme Java EXTERNAL (qui ressemble à cela) dans un programme Java. Je suis en train de créer un éditeur Java (avec Netbeans) qui doit compiler et exécuter un programme Java. Je suis coincé avec l'entrée utilisateur de editorWindow.

EDIT 2: J'ai trouvé la solution. Il est assez simple:

ProcessBuilder builderExecute = new ProcessBuilder("java", "Test"); 
builderExecute.redirectInput(Redirect.INHERIT); 
Process p = builderExecute.start(); 
String line = ""; 
while ((line = input.readLine()) != null) { 
     System.out.println(line); 
+4

'javac Test.java', suivi de' java Test'. (Dans une fenêtre d'invite de commandes, bien sûr.) –

+1

Pour élaborer un peu sur le commentaire Hot Licks. Compilez le code avec le compilateur Java et exécutez le code de la façon que vous voulez. L'utilisation d'un ProcessBuilder/Process devrait fonctionner correctement si vous voulez lancer ce code à partir d'un autre processus Java, ou utiliser l'invite de commande si vous voulez simplement l'exécuter. –

+1

Aussi, vous pouvez utiliser et IDE pour apprendre la langue (Eclipse, Netbeans, etc.). Ils ont des outils de compilation, et ce sera beaucoup plus facile pour vous –

Répondre

0

exécuter le programme Java dans un autre programme Java, j'espère que c'est ce que vous demandez.

Vous pouvez y parvenir en utilisant les classes Process et Runtime.

import java.io.*; 
public class TestExec { 
    public static void main(String[] args) { 
     try { 
      Runtime.getRuntime().exec("javac Test.java"); 
      Process p=Runtime.getRuntime().exec("java Test"); 
      BufferedReader in = new BufferedReader( 
           new InputStreamReader(p.getInputStream())); 
      String line = null; 
      while ((line = in.readLine()) != null) { 
       System.out.println(line); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
0

Lire ce article ou this, et vous pouvez également lire l'aide (javac -help).

Mise à jour: Compilez le fichier java par programmation en utilisant ProcessBuilder.

/** 
* 
* @param path 
*/ 
public static void compile(final String path) { 
    try { 
     final Process sqlProcess = getSqlProcess(path); 
       sqlProcess.waitFor(); 
       if (sqlProcess != null && sqlProcess.exitValue() == 0) { 
        // Done 
        System.out.println("Compilation success"); 
       } else { 
        System.out.println("Compilation fail"); 
       } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

private static Process getSqlProcess(String path) throws Exception { 
    if (System.getProperty("os.name").toLowerCase().indexOf("linux") >= 0) { 
     path = path.replaceAll("\\s", "\\\\ "); 
     String[] executeCmd = new String[]{"/bin/sh", "-c", "javac", path}; 
     return Runtime.getRuntime().exec(executeCmd); 
    } else { 
     path = path.replace("\\", "\\\\"); 
     String[] executeCmd = new String[]{"/bin/sh", "-c", "javac", path}; 
     return new ProcessBuilder(executeCmd).start(); 
    } 
} 
Questions connexes