我正在尝试从另一个java程序运行带有类路径的已编译java程序。但它没有显示结果。我的代码如下:
String[] cmd = {"C:\\WINDOWS\\system32\\cmd.exe","/c","start","javac","D:\\java\\hi\\src\\helo.java"};
Runtime.getRuntime().exec(cmd);
注意:在此之后,将创建类文件,但以下代码无效。
String[] cmd1 = {"C:\\WINDOWS\\system32\\cmd.exe","/c","start","java"," -cp D:\\java\\hi\\src"," helo"};
Runtime.getRuntime().exec(cmd1);
答案 0 :(得分:0)
你需要这样做才能在cmd中动态运行
Runtime.getRuntime.exec(“cmd / c cd / Desktop / folder /& java yourprogram”);
这假设您在Desktop / folder /目录中生成了类文件
需要注意的事项是& - 连接命令和/ c将参数传递给cmd
答案 1 :(得分:0)
请阅读:http://www.javaworld.com/jw-12-2000/jw-1229-traps.html
它已经过时了13年,因为它是在它公开的当天写成的
你几乎总是更好地动态创建一个新的类加载器,给它自己的环境,然后启动它。
答案 2 :(得分:0)
我希望你没有任何例外。我假设您从正确的位置获取类文件。
因为,你试图捕获 helo 的输出,你应该捕获你在下半部分运行的java命令的输入流。
尝试类似:( 仅适用于第二个命令)
BufferedReader in = null;
try {
String[] cmd1 = {"C:\WINDOWS\system32\cmd.exe","/c","start","java"," -cp D:\java\hi\src"," helo"};
Process p = Runtime.getRuntime().exec(cmd1);
in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
in.close();
}