如何通过java程序中的shell命令执行另一个java程序

时间:2014-04-10 05:28:49

标签: java shell

我应该为我的项目创建一个IDE。在这里,我必须通过来自特定java程序的Shell命令执行java程序(假设Hello world)。我知道如何通过java程序执行shell命令(使用Runtime.getRuntime()),但是如何使用这个shell命令调用run java程序。

2 个答案:

答案 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对象将允许您执行更多命令。