如何使用 node.js child_process API 运行 jar 文件?
Posted
技术标签:
【中文标题】如何使用 node.js child_process API 运行 jar 文件?【英文标题】:How to run a jar file with node.js child_process API? 【发布时间】:2012-10-05 05:23:22 【问题描述】:我试图在 nodejs 上运行一个 jar 文件,但它抛出了以下错误:
Error: Unable to access jarfile /home/example/Applications/example.jar
这是我在 test.js 中的以下代码:
var exec = require('child_process').exec, child;
child = exec('/usr/bin/java -jar ~/Applications/example.jar',
function (error, stdout, stderr)
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if(error !== null)
console.log('exec error: ' + error);
);
我在这个命令中使用 nodejs 运行了我的 test.js,但收到了上面的错误:
node test.js
我的代码有什么错误吗?我不确定为什么此时它会抛出错误。
【问题讨论】:
尝试这样做:console.log(require("fs").existsSync("~/Applications/example.jar")?"它在那里":"它不在");确定 jar 文件是否确实在该路径上。 我很好奇如何最好地将 java 进程的输出绑定到节点进程。 java进程是否应该只写入文件而节点进程读取文件? java进程如何通知节点? 【参考方案1】:从exec();
中删除.jar
当使用-jar
参数时,java 会找到没有.jar
的jar 文件。否则就像.. 搜索filename.jar.jar
特殊的雪花 macos 需要 .jar
,如果你省略它就不起作用。
(感谢 Gʀɪᴍ)he also created a related question
【讨论】:
变成了这样:child = exec('/usr/bin/java -jar ~/Applications/example',但还是抛出同样的错误。 你的 jar 文件真的在那个位置吗? 谢谢,我想这是我的问题。没有正确写位置。 这个答案在 Mac 上不正确。.jar
必须包含在内,否则将导致错误。
@Gʀɪᴍ 谁知道我在 2012 年写这个答案时的情况。但很高兴知道。我会添加一个通知【参考方案2】:
如果你在 windows 命令提示符下使用它,你可以使用这个代码。
var exec = require('child_process').exec, child;
child = exec('java -jar C:\\..\\..\\yourjar.jar',
function (error, stdout, stderr)
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if(error !== null)
console.log('exec error: ' + error);
);
不要忘记双带,否则会一团糟。
【讨论】:
我能否在检查总 CPU 和使用 for 循环的情况下动态运行多个执行 jar 文件的子进程?以上是关于如何使用 node.js child_process API 运行 jar 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)