2014-06-10 145 views
0

我想用javac命令編譯一個.java文件,然後我想用java命令執行它。下面是我想:如何在nodeJS上執行Java命令?

var spawn = require('child_process').spawn; 
var javac = spawn('javac', [' C:/Users/Administator/Desktop/Hello.java']); 
var javaa = spawn('java', [' C:/Users/Administator/Desktop/Hello']); 

javac.stdout.on('data', function out(data) { 
    console.log(data); 
    javaa.stdout.on('data', function out(data) { 
     console.log(data); 
    }); 

    javaa.stderr.on('data', function(data) { 
     console.log("error"); 
    }); 

    javaa.on('exit', function out(data) { 
     console.log(data); 
    }); 
}); 

javac.stderr.on('data', function(data) { 
    console.log("error"); 
}); 

javac.on('exit', function out(data) { 
    console.log(data); 
}); 
+0

你不應該產卵的java直到javac的完成?畢竟,你不能運行你的java程序,直到它已經編譯完畢。 –

+0

怎麼樣? @EdwinDalorzo – pharaon450

+0

您是否已閱讀過node.js [有關子進程的文檔](http://nodejs.org/api/child_process.html)?我想你的答案就在那裏。底線是在javac中註冊一個事件,讓它知道何時完成;然後運行其他進程。 –

回答

0

嘗試是這樣的:

var spawn = require('child_process').spawn; 
var opts = {stdio: 'inherit'} ; 
var javac = spawn('javac', [' C:/Users/Administator/Desktop/Hello.java'], opts); 

javac.on('close', function (code) { 
    if (code === 0) { 
     var javaa = spawn('java', [' C:/Users/Administator/Desktop/Hello'], opts); 
    } 
});