我正在尝试使用节点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)
但是,当我通过命令行通过简单地复制和粘贴它来运行它时,它完全正常。为什么会发生这种情况会有一个简单的解释吗?我是否在子进程调用中调用了错误的内容?
答案 0 :(得分:0)
我知道这个问题已经问了两年了。但是,我最近遇到了同样的问题,发现如果您在项目主目录中创建Shell文件,则可以使用spawn函数调用它。您只需要提供至少一个参数即可使其工作。
即使没有将Shell脚本设置为处理自变量,也是如此。否则,出于某种原因,它将ENOENT放在命令的末尾。我目前在移动设备上,但稍后会对其进行编辑以提供代码示例。