2010-02-14 1 views
3
// this works 
if ("Show".equals (obj)) 
{ 
    try { 
    String command= "/usr/bin/xterm -e javac panel_1.java"; 
    Runtime rt = Runtime.getRuntime();  
    Process pr = rt.exec(command); 

    BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));  
    String line = null; 
    while ((line = in.readLine()) != null) { 
     System.out.println(line); 
    } 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
} 

Это открывает окно xterm, вызывает javac на панели panel_1.java, оно компилируется, если файл panel_1.java является допустимым. то окно xterm закрывается. Прекрасно, я хочу принять предупреждения и т. Д. Из компиляции и поместить их в список или текст. Любые идеи ???Как я могу перенаправить вывод из javac обратно в вызывающую программу

+5

Почему вы запускаете xterm? Вы должны иметь возможность использовать rt.exec для запуска самого java-компилятора, который даст вам правильный поток ввода-вывода. – Kylar

ответ

5

Java 6 имеет JavaCompiler из пакета javax.tools, который предоставляет API для компилятора без необходимости запуска внешнего процесса. (прочитайте javadoc I, связанный!)

Here - небольшое учебное пособие по этому вопросу.