package uk.co.mmscomputing.application.install; import java.io.*; import java.util.*; public class Engine{ private Log log; private String javac=""; public Engine(Log log){ this.log=log; } public void print(InputStream in){ try{ BufferedReader r=new BufferedReader(new InputStreamReader(in)); String s; while((s=r.readLine())!=null){ log.msg(s); } }catch(Exception e){ log.err(e); } } public void run(String javac, String classpath, String programname){ String cmd=""; String java=""; String osname=System.getProperty("os.name"); if(osname.startsWith("Windows")){ if(javac.endsWith(".exe")){ java=javac.substring(0,javac.length()-5); }else{ java=javac.substring(0,javac.length()-1); } cmd+="\""+java+"\""; }else{ java+=javac.substring(0,javac.length()-1); cmd+=java; } cmd+=" "+programname; final String runcmd=cmd; // final String cmd="java -cp "+classpath+" "+programname; log.msg("Start : "+cmd); new Thread(){ public void run(){ try{ final Process p=Runtime.getRuntime().exec(runcmd); new Thread(){ public void run(){ print(p.getInputStream()); }}.start(); print(p.getErrorStream()); }catch(Exception e){ log.err(e); } log.msg("End : "+runcmd); } }.start(); } public void traverse(String dir, String javac)throws Exception{ this.javac=javac; traverse(dir); } private void traverse(String dir)throws Exception{ String[] dirs=listDir(dir); for(int i=0; i