从另一个java程序运行java程序

时间:2012-08-02 10:33:59

标签: java process javac runtime.exec java-compiler-api

我正在尝试从另一个Java应用程序运行Java程序。这是我的代码:

public class Main {
  public static int Exec() throws IOException {
    Process p = Runtime.getRuntime().exec("javac -d C:/Users/Dinara/Desktop/D/bin "
            + "C:/Users/Dinara/Desktop/D/src/test.java");
    Process p1 = Runtime.getRuntime().exec("java -classpath C:/Users/Dinara/Desktop/D/bin test");
    return 0;
  }

  public static void main(String[] args) throws IOException {
    Exec();
  }
}

javac正常工作并在bin目录中创建test.class文件。但是java -classpath C:/Users/Dinara/Desktop/D/bin test不会运行test.class文件。 test.java的内容:

import java.io.*;
class test {
  public static void main(String args[]) {
    try {  
      FileWriter fstream = new FileWriter("out.txt");
      BufferedWriter out = new BufferedWriter(fstream);
      out.write("Hello Java");
      out.close();
    } catch (Exception e) {
    System.err.println("Error: " + e.getMessage());
    }
  }
}

我认为识别Java命令有问题。你能给我一个解决这个问题或分享想法的示例代码吗?我正在使用Netbeans运行Main类,应用程序文件夹的位置是C:\ Users \ Dinara \ Main

2 个答案:

答案 0 :(得分:3)

使用

System.getProperty("java.home") + "/bin/java -classpath C:/Users/Dinara/Desktop/D/bin test" 

而不是

"java -classpath C:/Users/Dinara/Desktop/D/bin test"

答案 1 :(得分:2)

你需要提供javac的完整路径,exec不会使用ath为你找到它