我正在开发一个Web应用程序,一种用于编写和编译代码的在线IDE。编程语言是在大学内部和编译器内部开发的。
我的问题是:是否可以在服务器上执行编译器(编译器是用java编写的),以便编译代码并返回要下载的编译文件?
以更简单的方式,用户使用在线代码编辑器,然后单击编译按钮,服务器获取编写的代码,执行服务器上的编译器(编译器用java编写)然后返回编译文件。
那我怎么能在服务器上执行编译器(用java编写)?
提前谢谢!
答案 0 :(得分:6)
您没有说出什么类型的服务器,或者您使用什么语言来开发Web应用程序(PHP,node.js,python,perl等),但通常Java发行版都有一个将运行的命令行二进制文件Java代码。
如果编译器文件在jar文件中,那么webapp执行的命令可能很简单:
java -jar compiler.jar inputcodefile outputexecutablefile
当然,您将替换文件名并添加编译器所需的适当选项(如果有)。
编辑:我看到你用node.js标记了你的问题,所以我假设这是你在服务器端使用的语言。
node.js具有“子进程”,允许您执行外部命令。 因此,使用上面给出的示例命令,您可以执行以下操作:
var exec = require('child_process').exec;
var compileit = 'java -jar compiler.jar inputcodefile outputexecutablefile';
exec(compileit, function(error, stdout, stderr) {
});
使用PHP更容易:
exec('java -jar compiler.jar inputcodefile outputexecutablefile');
有关PHP中exec()函数的更多信息,请参阅http://php.net/manual/en/function.exec.php。
答案 1 :(得分:0)
执行此操作的典型方法是使用处理POST请求的控制器创建REST API。在请求的数据中,您需要发送输入源代码,并且响应的数据应包含已编译的代码。
如果编译封装在一个名为“compile”的函数中,那么使用Spring框架,您的REST控制器将看起来像这样:
@RestController
public class HelloController {
@RequestMapping(value = "/compile", method = RequestMethod.POST)
public String compilationAPI(@RequestBody SourceCode sourceCode) {
String compiledCode = compile(sourceCode);
return compiledCode;
}
}
答案 2 :(得分:-1)
试试这个:
https://tomcat.apache.org/download-70.cgi
一些教程:
https://www.youtube.com/watch?v=3CXBRjpiTws
http://www.coreservlets.com/Apache-Tomcat-Tutorial/
http://www.tutorialspoint.com/servlets/
你可以使用eclipse启动一个tomcat服务器来测试你的代码。