package builtin.programming; import builtin.BuiltinSub; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import gui.Constants; import gui.MintException; import gui.Pointer; import gui.PointerTools; import gui.SmartList; /** * * @author Oliver Chu */ public class ExecuteJava extends BuiltinSub { @Override public Pointer apply(SmartList<Pointer> args) throws MintException { String programName = PointerTools.dereferenceString(args.get(0)); programName = programName.trim(); String className = programName.replace(".java", ""); if (!programName.endsWith(".java")) { programName += ".java"; } try { Process jv = Runtime.getRuntime().exec( "javac " + programName); Process jv2 = Runtime.getRuntime().exec( "java " + className); BufferedReader in = new BufferedReader( new InputStreamReader(jv2.getInputStream())); String line = null; int i = 0; int limit = Integer.MAX_VALUE >>> 1; while (i < limit) { line = in.readLine(); if (line == null) { break; } System.out.println(line); i++; } } catch (IOException ex) { } return Constants.MINT_NULL; } }