我应该为我的项目创建一个IDE。在这里,我必须通过来自特定java程序的Shell命令执行java程序(假设Hello world)。我知道如何通过java程序执行shell命令(使用Runtime.getRuntime()),但是如何使用这个shell命令调用run java程序。
答案 0 :(得分:0)
从ProcessBuilder
开始,它将允许您将每个命令参数作为单独的参数分开,从而无需引用"引用"具有空格(如路径)的参数,它将允许您指定命令的起始位置(工作目录),重定向支持使得从命令输出中提取信息变得更容易(尽管您可能希望将其保持独立)...
List<String> cmds = new ArrayList<String>(5); // You can use arrays as well
cmds.add("java");
cmds.add("-jar");
cmds.add("filename.jar");
ProcessBuilder pb = new ProcessBuilder(cmds);
pb.redirectErrorStream(true);
pb.directory(new File("...")); // Working directory...
Process p = pb.start();
// Normal processing of the Process...
您甚至可以指定传递给流程的环境变量......
查看Java Docs了解更多详情
答案 1 :(得分:0)
这会奏效。
设置命令,然后在那里创建运行时和执行命令。
String command[] = new String[4];
command[0] = "cmd";
command[1] = "/k start cmd /k";
command[2] = "java";
command[3] = path;
Process p = Runtime.getRuntime().exec(command);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream())); //This will allow you to supply with input
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream())); //This will provide you access to the errors.
pw = new PrintWriter(p.getOutputStream());
pw.println("next commands");
PrintWriter
对象将允许您执行更多命令。