簡體   English   中英

Python 使用子進程啟動 Java 應用程序:最大堆大小無效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM