在服务器上执行java代码

我正在开发一个Web应用程序,一种在线IDE来编写和编译代码。 编程语言是在大学内部开发的,也是编译器。

我的问题是:是否有可能在服务器上执行编译器(编译器是用java编写的),以便它编译代码并返回一个编译的文件以便下载?

用户使用在线代码编辑器,然后点击编译button,服务器获取编写的代码,执行服务器上的编译器(编译器用java编写),然后返回编译后的文件。

那么我怎么能执行服务器上的编译器(用java写的)?

先谢谢你 !

你没有说什么types的服务器,或者你用什么语言来开发web应用程序(PHP,node.js,python,perl等),但是通常Java发行版都有一个命令行二进制代码来运行Java代码。

如果编译器文件在jar文件中,那么webapp执行的命令可能很简单,如下所示:

java -jar compiler.jar inputcodefile outputexecutablefile

当然,你会replace文件名,并添加编译器所需的适当选项(如果有的话)。

编辑:我看到你用node.js标记你的问题,所以我假设你是在服务器端使用的语言。

node.js有“subprocess”,允许你执行外部命令。 所以用上面给出的示例命令,你可以做如下的事情:

 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

这样做的一个典型方法是创build一个REST API和一个处理POST请求的控制器。 在请求的数据中你需要发送input的源代码,而响应的数据应该包含编译后的代码。

如果编译被封装在一个名为“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; } } 

尝试这个:
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服务器来testing你的代码。