java命令在节点js子进程exec中失败,但在命令行上成功

java命令在节点js子进程exec中失败,但在命令行上成功,java,node.js,runtime-error,openxml,child-process,Java,Node.js,Runtime Error,Openxml,Child Process,我正在尝试使用node 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" "/a

我正在尝试使用node 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)
错误:命令失败:java-Duser.dir=/app/system/controllers/-jar-Xmx2048m-XX:-usegoverdelimit”/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”
线程“main”org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException中出现异常:未找到有效条目或内容,这不是有效的OOXML(Office Open XML)文件
位于org.apache.poi.openxml4j.opc.ZipPackage.getpartsiml(ZipPackage.java:290)
位于org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:774)
位于org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:344)
在org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
位于org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:285)

但是,当我通过命令行通过复制和粘贴来运行它时,它完全可以正常工作。有没有一个简单的解释来解释为什么会发生这种情况?我是否在子进程调用中调用了错误的内容

我知道这个问题已经问了两年了。但是,我最近也遇到了同样的问题,发现如果在projects主目录中创建一个shell文件,那么可以使用spawn函数调用它。你只需要提供至少一个参数就可以了


即使没有设置shell脚本来处理参数,也会出现这种情况。否则,出于某种原因,它会将enoint放在命令的末尾。我现在在手机上,但稍后将编辑此内容以提供代码示例。

但是为什么它可以在命令行上正常工作而没有错误?我复制并粘贴错误消息中给出的命令,并在测试中运行它,类似的代码是由
-Duser.dir=/app/system/controllers/
引起的错误。检查你!!