2014-06-10 146 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); 
    } 
});