Python使用子进程启动Java应用程序:最大堆大小无效
我正在尝试使用子流程模块用Python启动Java应用程序。我对Python并不陌生,但我对子流程模块是新手。当我尝试运行此代码时: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
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"]
当您尝试运行该代码时,…,什么?你开始了一个句子,但没有完成。