2015-08-25 42 views
1

輸出文件對於項目的結構是這樣的:從的NodeJS中調用Java根

/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選項

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){}) 
+0

爲什麼不要移動'的NodeJS fs.rename(oldPath,NEWPATH)'文件,生成後呢? –

+0

已經做到了 - '//將文件從根目錄移動到/ cached/ fs.rename(getFileName.split(「。」)[0] +「.json」,__dirname +'/ cached /'+ getFileName.split )[0] +) 「 」「 JSON。」; '但JAR可以生成不同的文件名(取決於調用Java時的時間點)。 – iulia

+0

您的其他選擇是分叉OWL2VOWL項目,添加另一個命令行參數,如'outputPath'並實現該功能。它不應該是一個大問題,像https://github.com/VisualDataWeb/OWL2VOWL/blob/master/src/main/java/de/uni_stuttgart/visit中的exportFile = new File(outputPath,filename) /vowl/owl2vowl/Main.java –

回答

1
(在下文中,結果將文件夾 /components中被輸出)

問題不在於java代碼,儘管它可能會被修復,將它更改爲接受前面建議的輸出文件夾。

我相信,將node.js exec選項cwd添加到您希望輸出的目錄中會有效。

進一步看這裏: child_process.exec(command[, options], callback)