【问题标题】:Execute java code on a server在服务器上执行 java 代码
【发布时间】:2026-01-07 14:40:02
【问题描述】:

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

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

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

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

提前谢谢你!

【问题讨论】:

    标签: java node.js compilation server execute


    【解决方案1】:

    您没有说明您使用什么类型的服务器,或者您使用什么语言来开发 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

    【讨论】:

    • 您好!感谢您的快速回复!实际上我正在使用 PHP ( Laravel ) 开发 Web 应用程序,但是有些人告诉我我可以使用 node.js 来执行编译器,这就是我标记 node.js 的原因。另外,是的,编译器是jar文件,所以没有那么复杂,我只是问什么技术最适合做这种工作?
    • 没问题!我发布的内容是否回答了您的问题?
    • 您好!感谢您的快速回复!实际上我正在使用 PHP ( Laravel ) 开发 Web 应用程序,但是有些人告诉我我可以使用 node.js 来执行编译器,这就是我标记 node.js 的原因。另外,是的,编译器是jar文件,所以没有那么复杂,我只是问什么技术最适合做这种工作?
    • 啊,那么使用 PHP 就更简单了。我不会使用 node.js 来运行命令。现在,如果您需要它来做其他事情,那很好,但是 PHP 可以让您非常轻松地执行外部命令。我已经编辑了我的答案以添加如何使用 PHP。
    • 非常感谢!!我真的很感激!
    【解决方案2】:

    执行此操作的典型方法是创建一个带有处理 POST 请求的控制器的 REST API。请求数据中需要发送输入源代码,响应数据中应包含编译后的代码。

    如果编译被封装在一个名为“compile”的函数中,您的 REST 控制器将如下所示,使用 Spring 框架:

    @RestController
    public class HelloController {
    
        @RequestMapping(value = "/compile", method = RequestMethod.POST)
        public String compilationAPI(@RequestBody SourceCode sourceCode) {
            String compiledCode = compile(sourceCode);
            return compiledCode;
        }
    
    }
    

    【讨论】:

    • 感谢您的回复!但正如我所说的编译器已经完成,我不认为它背后的人想改变代码......他们有一个工作 jar..so......
    • 我认为您需要帮助了解如何创建客户端和服务器之间的交互。您在以编程方式调用编译器和加载输出文件方面需要帮助吗?
    • 这就是我想做的。在网络应用程序中,您单击编译,我们以编程方式启动编译器并下载编译后的文件!
    【解决方案3】:

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

    【讨论】:

    • 感谢您的快速回复!我认为我们不能为了这么简单的任务切换到 tomcat juste。还是谢谢你!