Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “的参数语法”;ProcessBuilder.command";_Java_Runtime.exec - Fatal编程技术网

Java “的参数语法”;ProcessBuilder.command";

Java “的参数语法”;ProcessBuilder.command";,java,runtime.exec,Java,Runtime.exec,我试图将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(); OutputS

我试图将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 heap error”,或者如果我尝试在最后一个字符串中添加“args”,那么我会得到“无法访问jarfile”

那么,添加所有参数以使系统调用按正确顺序进行的正确语法是什么呢

非常感谢你的帮助

编辑:


我还尝试传递整个命令,但由于某些原因,没有成功。

您似乎没有处理进程的错误输入流


请看这里:这将解释问题并为您提供解决方案:使用流吞噬器。

您似乎没有处理流程的错误输入流


请看这里:这将解释问题并为您提供解决方案:使用流吞噬器。

您可能需要设置进程的工作(也称为当前)目录,以便它可以找到jar文件。或者使用-classpath指定类路径,以便out包含该jar


另外,要对输出进行gobble处理

您可能需要为进程设置工作(aka current)目录,以便它可以找到jar文件。或者使用-classpath指定类路径,以便out包含该jar


另外,不要狼吞虎咽输出

我稍后会处理流,但我无法让它执行我想要的完整命令。thxI修改了原始帖子以包含该部分,我可以发布完整的代码,但基本上是一个线程读取输出,该部分工作,我只是无法将参数传递给子进程jar。我使用builder.redirectErrorStream(true),虽然不在帖子中。我稍后会处理流,但我就是不能让它执行我想要的全部命令。thxI修改了原始post以包含该部分,我可以发布完整的代码,但基本上是一个线程读取输出,该部分工作,我只是不能将参数传递给子进程jar。我使用builder.redirectErrorStream(true),尽管该部分不在post中。