Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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
Python使用子进程启动Java应用程序:最大堆大小无效_Java_Python_Heap_Subprocess - Fatal编程技术网

Python使用子进程启动Java应用程序:最大堆大小无效

Python使用子进程启动Java应用程序:最大堆大小无效,java,python,heap,subprocess,Java,Python,Heap,Subprocess,我正在尝试使用子流程模块用Python启动Java应用程序。我对Python并不陌生,但我对子流程模块是新手。当我尝试运行此代码时: import subprocess as sp proc = sp.Popen(["java", "-Xmx1536M -Xms1536M", "-jar /home/bekk/MServer/ForgeBukkit/MCPC.jar"],stdin=sp.PIPE,stdout=sp.PIPE,) 命令: java -Xmx1536M -Xms1536M -j

我正在尝试使用子流程模块用Python启动Java应用程序。我对Python并不陌生,但我对子流程模块是新手。当我尝试运行此代码时:

import subprocess as sp
proc = sp.Popen(["java", "-Xmx1536M -Xms1536M", "-jar /home/bekk/MServer/ForgeBukkit/MCPC.jar"],stdin=sp.PIPE,stdout=sp.PIPE,)
命令:

java -Xmx1536M -Xms1536M -jar /home/bekk/MServer/ForgeBukkit/MCPC.jar
输入到终端时运行正确,因此我知道它可以工作。 从Python运行它似乎有问题。关于我的问题有什么想法吗?

您正在将
“-Xmx1536M-Xms1536M”作为单个参数传递

这与此shell命令不同:

java -Xmx1536M -Xms1536M -jar /home/bekk/MServer/ForgeBukkit/MCPC.jar
……但对于这一点:

java '-Xmx1536M -Xms1536M' -jar /home/bekk/MServer/ForgeBukkit/MCPC.jar
因此,Java将把
'-Xmx1536M-Xms1536M'
作为它的
argv[1]
,而不是在
argv[1]
中获得一个标志,在
argv[2]
中获得下一个标志。当您试图将
mx
设置为
'1536M-Xms1536M'
时,它将解释一个巨大的标志arg,这不是有效的最大堆大小

要修复此问题,请将每个参数放在列表中其自己的字符串中:

["java", "-Xmx1536M", "-Xms1536M", "-jar", "/home/bekk/MServer/ForgeBukkit/MCPC.jar"]

当您尝试运行该代码时,…,什么?你开始了一个句子,但没有完成。