private static void exec(Class clazz, String classLocation, PrintStream stream) throws IOException, InterruptedException { String javaHome = System.getProperty("java.home"); String javaBin = javaHome + "/bin/java"; String classpath = FileUtils.getParentFolder(classLocation); // System.getProperty("java.class.path"); String className = clazz.getCanonicalName(); String outputLocation = FileUtils.getParentFolder(classLocation); Command command = new Command( Display.getDefault(), "\"" + javaBin + "\" -cp " + "\"" + classpath + "\" " + className, outputLocation); command.execute(); }
public static Program run(String fileLocation, final ConsoleStream stream) { fileLocation = FileUtils.removeExtension(fileLocation); // TODO: Fix the issue with the /src/ possible ambiguities. String projectLocation = FileUtils.getPrecedingPath(fileLocation, "/src/"); String className = FileUtils.getPathRelativeTo(fileLocation, "/src/"); String classLocation = projectLocation + "/bin/" + className; // try // { // URL url = new URL("file://" + FileUtils.getParentFolder(classLocation) + "/"); // // final ClassLoader cLoader = new URLClassLoader(new URL[] { url }); // // final String className = FileUtils.getFileNameWithoutExtension(classLocation); // //// Class clazz = cLoader.loadClass(className);//classLocation.substring(0, // classLocation.lastIndexOf('.'))); // //// final Method m = clazz.getMethod("main", String[].class); // //// classRunning = true; // // new Thread() // { // public void run() // { // try // { // Class clazz = null; // // if (classes.containsKey(classLocation)) // { // clazz = classes.get(classLocation); // } // else // { // clazz = cLoader.loadClass(className); // // classes.put(classLocation, clazz); // } // // exec(clazz, classLocation, stream); // } // catch (ClassNotFoundException e) // { // e.printStackTrace(); // } // catch (InterruptedException e) // { // e.printStackTrace(); // } // catch (IOException e) // { // e.printStackTrace(); // } // } // }.start(); // } // catch (MalformedURLException e) // { // e.printStackTrace(); // } if (!FileUtils.fileExists(CONFIG_DATA.get("jdk.location"))) { FileBrowseDialog jdkSearch = new FileBrowseDialog( "Specify your JDK location.", "Location:", CONFIG_DATA.get("jdk.location"), FileBrowseDialog.DIRECTORY); String jdkLoc = jdkSearch.open(); if (jdkLoc != null) { String location = FileUtils.removeEndingSlashes(jdkLoc.replace('\\', '/')); ArrowIDE.setConfigDataValue("jdk.location", location); } else { stream.println("You must specify a valid jdk to compile this program."); return null; } } String classpath = getClasspath(projectLocation); Command c = new Command( Display.getDefault(), new String[] { CONFIG_DATA.get("jdk.location") + "/bin/java", "-cp", classpath, className }, projectLocation); String fileName = FileUtils.getFileNameWithoutExtension(fileLocation); try { c.execute(fileName); return c.getProgram(); } catch (IOException e) { e.printStackTrace(); } return null; }