簡體   English   中英

java命令在節點js子進程exec中失敗,但在命令行上成功

[英]java command fails in node js child process exec but succeeds on command line

我正在嘗試使用節點 JS 子進程 exec 包運行以下命令:

java -Duser.dir=/app/system/controllers/ -jar -Xmx2048m -XX:-UseGCOverheadLimit "/app/system/controllers/validation/dist/Validation.jar" "load" "ATC" "/app/system/controllers/validation/test files/uploadedfile1.xlsx" "/app/system/controllers/validation/test files/uploadedfile2.xlsx"

這是我如何稱呼它:

var exec = require('child_process').execSync;

var child = exec('java -Duser.dir=/app/system/controllers/ -jar -Xmx2048m -XX:-UseGCOverheadLimit "/app/system/controllers/validation/dist/Validation.jar" "load" "ATC" "/app/system/controllers/validation/test files/uploadedfile1.xlsx" "/app/system/controllers/validation/test files/uploadedfile2.xlsx"', function (error, stdout, stderr){
                if(error){
                    console.log("The error is: ",error);
                }
            });

出於某種原因,當我這樣稱呼它時,會出現以下錯誤:

Error: Command failed: java -Duser.dir=/app/system/controllers/ -jar -Xmx2048m -XX:-UseGCOverheadLimit "/app/system/controllers/validation/dist/Validation.jar" "load" "ATC" "/app/system/controllers/validation/test files/uploadedfile1.xlsx" "/app/system/controllers/validation/test files/uploadedfile2.xlsx"
Exception in thread "main" org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException: No valid entries or contents found, this is not a valid OOXML (Office Open XML) file
    at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:290)
    at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:774)
    at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:344)
    at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:285)

但是,當我通過命令行運行它時,只需復制和粘貼它,它就可以正常工作。 為什么會發生這種情況是否有一個簡單的解釋? 我在子進程調用中有什么問題嗎?

我知道自從提出這個問題以來已經兩年了。 不過最近我也遇到了同樣的問題,發現如果在projects主目錄下創建shell文件,可以用spawn函數調用。 您只需要提供至少一個參數即可使其起作用。

即使未設置 shell 腳本來處理參數也是如此。 否則,它會出於某種原因將 ENOENT 放在命令的末尾。 我目前在移動設備上,但稍后將對其進行編輯以提供代碼示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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