执行存储在数据库中的 Java 代码

use*_*419 3 java database dynamic

我有定期推送到数据库的 Java 代码(解释为什么它在数据库中太复杂了,这只会把焦点从主要问题上移开)。

在运行时我查询数据库。我可以执行从数据库中获取的代码吗?我只在代码中存储 main 方法的内容。运行数据库的服务器是 HTTP 服务器。

来自数据库的示例代码(仅供参考):

int i = 10;
int j = 2;
int k = i*j;
System.out.println("Result is " + k);
Run Code Online (Sandbox Code Playgroud)

预期输出:

Result is 20
Run Code Online (Sandbox Code Playgroud)

Iva*_*nin 5

任何 Java 程序都是正确的 Groovy 程序。因此,您可以将 Groovy 依赖项添加到您的项目中,然后使用GroovyShell执行您的代码:

GroovyShell shell = new GroovyShell();
shell.evaluate(code);
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下:

GroovyShell shell = new GroovyShell();
shell.evaluate("int i = 10;\n" +
        "int j = 2;\n" +
        "int k = i*j;\n" +
        "System.out.println(\"Result is \" + k);");
Run Code Online (Sandbox Code Playgroud)

和输出:

结果是 20

或者您可以使用ScriptEngineManager(更常见的方式):

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("groovy");
engine.eval("int i = 10;\n" +
        "int j = 2;\n" +
        "int k = i*j;\n" +
         "System.out.println(\"Result is \" + k);");
Run Code Online (Sandbox Code Playgroud)

但无论如何,您需要将 Groovy 添加到您的依赖项中。