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)
任何 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 添加到您的依赖项中。
| 归档时间: |
|
| 查看次数: |
2303 次 |
| 最近记录: |