繁体   English   中英

从root的NodeJS输出文件中调用Java

[英]Calling Java from NodeJS outputs file in 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文件结果的路径? 理想情况下进入\\app\\uploads

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

编辑-添加了解决方案

javabeangrinder建议的解决方案是添加一个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代码,尽管可以将其更改为接受它,如先前建议的那样将其更改为接受输出文件夹。

我相信,将node.js exec选项cwd添加到您希望输出的目录即可解决问题。

在此处进一步查看: child_process.exec(command [,options],callback)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM