Java “的参数语法”;ProcessBuilder.command";
我试图将jar文件作为进程启动,我需要运行的命令如下: “java-Xmx512M-Xms512M-jar myapp.jar args” 这是我目前正在使用的代码: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
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中。