将我的一些Shell脚本转换为Node,这样我就可以学习Node。在shell中,我通常使用以下命令运行JAR文件:
java -jar validate.jar test.json >> results.txt
在研究如何在Node中运行JAR时,我碰到了“ How to run a jar file with node.js child_process API?”,其中accepted answer表示不需要.jar
扩展名。
根据建议,我在读完“ How to Create JAR file and Using child_process OR shell script to Execute”之后做了npm install child_process
写了我的脚本并收到一个错误,该错误是相同的错误:
Error: Unable to access jarfile /home/example/Applications/example.jar
单步执行后,我发现Mac上需要.jar
扩展名才能正常工作。我知道答案是从2012年到2019年,但是答案是否正确或是否依赖于操作系统才能调用该扩展名?
这是我编写的代码:
let jarFile = __dirname + '/validate.jar'
let theFile = 'test.json'
let outputFile = 'result.txt'
let runCommand = '/usr/bin/java -jar ' + jarFile + ' ' + theFile
// return console.log(runCommand)
var exec = require('child_process').exec
child = exec(runCommand, function (error, stdout, stderr) {
if(error !== null) {
console.log('exec error: ' + error)
} else {
console.log('stdout: ' + stdout);
}
})
代码工作正常,但是在学习如何写文件时,我想理解的是在调用JAR文件时是否需要扩展名,并且该扩展名取决于操作系统吗?我当前正在使用Node v6.12.3。