アプリケーションのユーザーが提供する Java ファイルを実行時に実行したいと考えています。
私は試した:
Process p1 = Runtime.getRuntime().exec("javac MyClass.java");
p1.waitFor();
Process p2 = Runtime.getRuntime().exec("java MyClass");
p2.waitFor();
しかし、うまくいきません。クラス ファイルは作成されますが、バイナリ ファイルは作成されません。
なにか提案を?
私がやっていることを正確に説明します:
だからここに私のJavaファイルがあります:
public class MyClass {
public void myMethod(){
System.out.println("My Method Called");
}
}
そして、このクラスをコンパイルして実行しようとしている私のコードは次のとおりです。
public class TestExecute {
private static void printLines(String name, InputStream ins) throws Exception {
String line = null;
BufferedReader in = new BufferedReader(
new InputStreamReader(ins));
while ((line = in.readLine()) != null) {
System.out.println(name + " " + line);
}
}
private static void runProcess(String command) throws Exception {
Process pro = Runtime.getRuntime().exec(command);
printLines(command + " stdout:", pro.getInputStream());
printLines(command + " stderr:", pro.getErrorStream());
pro.waitFor();
System.out.println(command + " exitValue() " + pro.exitValue());
}
public static void main(String[] args) {
try {
runProcess("javac MyClass.java");
runProcess("java MyClass");
} catch (Exception e) {
e.printStackTrace();
}
}
}
パスに MyClass.class が作成されます。Hier はコンソールの出力です。
javac C:/Users/Maher/workspace/1/src/main/java/model/MyClass.java exitValue() 0
Windows 7でEclipseを使用しています。
そして、このソリューションをテストするために「My Method Called」を表示したいのですが、表示されませんでした。
何か助けはありますか?ありがとう!