从NodeJS调用Java以root身份输出文件

对于这样的项目结构:

/myfolder/app/components/owl2vowl.jar /myfolder/app/uploads/ontology.owl /myfolder/app.js 

我正在使用OWL2VOWL将本体转换为JSON

我在app.js编写代码来运行带有一些参数的jar文件,它将像这样运行命令:

 java -jar e:\myfolder\app\components\owl2vowl.jar -file e:\myfolder\app\uploads\ontology.owl 

这里是代码:

 var exec = require('child_process').exec, child; child = exec('java -jar ' + __dirname + '/components/owl2vowl.jar' + ' -file ' + syncPath , function (error, stdout, stderr){ if(error !== null) console.log('There was an error parsing the ontology' + error); else console.log('Succes parsing the ontology'); 

哪里

 syncPath = e:\myfolder\app\uploads\ontology.owl 

问题是,在文件夹myfolder生成文件ontology.json生成结果

如何更改Java文件结果生成的path? 理想的进入\app\uploads

 /myfolder/app/components/owl2vowl.jar /myfolder/app/uploads/ontology.owl /myfolder/app.js /myfolder/ontology.json 

编辑 – 添加解决scheme

javabeangrinderbuild议的解决scheme是添加一个cwd选项(在下面,结果将被输出到文件夹/components

 var options = { encoding: 'utf8', timeout: 0, maxBuffer: 200*1024, killSignal: 'SIGTERM', cwd: __dirname + '/components/', env: null } child = exec('java -jar ' + __dirname + '/components/owl2vowl.jar' + ' -iri ' + '"'+body.url+'"'+' -echo' , options, function (error, stdout, stderr){}) 

问题不在于java代码,尽pipe可以修改它,以便像前面build议的那样接受输出文件夹。

我相信,将node.js exec选项cwd添加到你想要输出的目录就可以了。

在这里进一步看: child_process.exec(命令[,选项],callback)