从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)