Преобразование нескольких моих сценариев оболочки в Node, чтобы я мог изучить Node, в оболочке я обычно запускаю файл JAR с помощью команды:
java -jar validate.jar test.json >> results.txt
При исследовании, как запустить JAR в узле, я столкнулся с « Как запустить файл jar с API-интерфейсом child.process node.js? » с принятым ответом , указывающим .jar
расширение не требуется.
Следуя совету, я сделал npm install child_process
после прочтения " Как создать файл JAR и Использование сценария оболочки child_process OR для выполнения "
написал мой сценарий и получил ошибку, которая была такой же:
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.