我试图将jar文件作为一个进程启动,我需要运行的命令是这样的:
“java -Xmx512M -Xms512M -jar myapp.jar args”
这是我目前工作的代码:
ProcessBuilder builder = new ProcessBuilder();
String[] command = {"java", "-jar", "myapp.jar"};
builder.command(command);
Process process = builder.start();
OutputStream stdin = process.getOutputStream();
InputStream stdout = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
ReaderThread rt = new ReaderThread(reader);
Thread handle = new Thread(rt, "ReaderThread");
handle.start();
但是如果我尝试添加类似“-Xmx1024M”的东西,我会得到一个“Maximun堆错误”,或者如果我尝试在最后一个字符串中添加“args”,那么我得到“无法访问jarfile”。< / p>
那么为系统调用添加所有参数以正确顺序完成的正确语法是什么?
非常感谢你的帮助。
编辑:
我也试过传递整个命令,但由于某种原因,它没有用。
答案 0 :(得分:1)
您似乎没有处理进程的错误输入流。
请在这里查看:What to do when Runtime exec Won't这将解释问题并为您提供解决方案:使用流gobblers。
答案 1 :(得分:0)
您可能需要为进程设置工作(也称为当前)目录,以便它可以找到jar文件。或者使用-classpath指定类路径,因此out包含该jar。
另外,请吞噬输出