【发布时间】:2013-11-13 02:37:21
【问题描述】:
我正在构建一个在 Node.js 中使用 Java 的应用程序。我做了一个函数来检查 Java 版本:
function javaversion() {
var spawn = require('child_process').spawn('java', ['-version']);
spawn.stderr.on('data', function(data) {
data = data.toString().split('\n')[0];
var javaVersion = new RegExp('java version').test(data) ? data.split(' ')[2].replace(/"/g, '') : false;
if (javaVersion != false) {
// TODO: We have Java installed
} else {
// TODO: No Java installed
}
});
}
但是对于没有安装 Java 的系统,Node.js 会抛出 ENOENT 错误,因为模块“child_process”无法生成进程。如何验证是否从 Node.js 安装了 Java?
感谢您的帮助!
【问题讨论】:
-
您是否考虑过检查环境变量,例如类路径或...?然后寻找二进制文件?
-
@WiredPrairie,是的,我考虑过,但这对所有系统来说都不是一个好主意。例如,在 OS X 10.8 中,没有设置 CLASSPATH。我解决了处理不生成进程错误的问题,就像 Sudsy 建议的那样。谢谢。
-
我已经安装了 Java(根据 Windows 安装程序),但它不在路径中,因此此方法完全失败。因此,对于“所有系统”来说,这似乎并不是一个好的解决方案。
标签: java javascript node.js