[英]Python Starting Java application with subprocess:Invalid maximum heap size
我正在嘗試使用 subprocess 模塊使用 Python 啟動 Java 應用程序。 我對 Python 並不陌生,但我對 subprocess 模塊很陌生。 當我嘗試運行此代碼時:
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"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.