在服务器上执行java代码

时间:2016-01-15 18:57:27

标签: java node.js compilation server execute

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

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

以更简单的方式,用户使用在线代码编辑器,然后单击编译按钮,服务器获取编写的代码,执行服务器上的编译器(编译器用java编写)然后返回编译文件。

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

提前谢谢!

3 个答案:

答案 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服务器来测试你的代码。