Я предполагаю, что файл jar не содержит аргументов командной строки.
Синтаксис для передачи аргументов командной строки в Java: java -jar javafilename arg1 arg2 ....
чтобы передать аргументы командной строки в вашем коде:
/*variable 'store the results of two array in string'*/
const cmdArgs = [...results[0], results[1]].toString().replace(/[, ]+/g, " ");
/* variable 'command line code' */
const cmdCode = `java -jar /home/java/testsize.jar ${cmdArgs}`;
var exec = require('child_process').exec, child;
child = exec(cmdCode,
function (error, stdout, stderr){
console.log('stdout: ' + JSON.stringify(stdout));
//console.log('stderr: ' + stderr);
res.send(joblist+" "+stderr);
if(error !== null){
console.log('exec error: ' + error);
}
});
Если файл JAR принимает результаты в качестве входных данных, вы можете просто передать их по каналу '|'.
Пример:
/*variable 'store the results to two array in string'*/
const cmdArgs = [...results[0], results[1]].toString().replace(/[, ]+/g, " ");
/* variable 'command line code' */
const cmdCode = `${cmdArgs} | java -jar /home/java/testsize.jar `;
var exec = require('child_process').exec, child;
child = exec(cmdCode,
function (error, stdout, stderr){
console.log('stdout: ' + JSON.stringify(stdout));
//console.log('stderr: ' + stderr);
res.send(joblist+" "+stderr);
if(error !== null){
console.log('exec error: ' + error);
}
});
Что касается ограничения размера аргумента для аргумента .
Ничего не нашел об этом, но в разных ОС максимальная длина командной строки ограничена.
Если размер аргументов достаточно велик, чтобы превысить ограничение длины командной строки, вы можете перейти к входному потоку java, чтобы принять данные в качестве входных данных (необходимо изменить код java (jar file) для этого кода принять ввод данных).
Вы можете сохранить результат во временном файле, а затем передать его в JAR-канал через трубу.
Пример:
/*require fs to write into file*/
var fs = require("fs");
/*variable 'store the results to two array in string'*/
const cmdArgs = [...results[0], results[1]].toString().replace(/[, ]+/g, " ");
/*set file name*/
const tempFile = 'temp' + new Date().valueOf() + '.txt';
fs.writeFileSync(tempFile, cmdArgs);
/* variable 'command line code' */
const cmdCode = `cat > ${tempFile} | java -jar /home/java/testsize.jar `;
var exec = require('child_process').exec, child;
child = exec(cmdCode,
function (error, stdout, stderr){
/*delete the file*/
fs.unlinkSync(tempFile);
console.log('stdout: ' + JSON.stringify(stdout));
//console.log('stderr: ' + stderr);
res.send(joblist+" "+stderr);
if(error !== null){
console.log('exec error: ' + error);
}
});