java - 如何从 Java 应用程序级别运行自定义脚本代码?

标签 java javafx

我有一个应用程序,我希望为用户提供编写简单脚本的可能性,以便他们可以以更个性化的方式驱动应用程序。这些脚本将基于 Java 自定义库,并将用例如 Java 语言编写。 JavaFX TextArea 控件项。

现在,假设某个用户写了这样的内容: enter image description here

当他或她点击“运行脚本”按钮时,脚本将根据自定义库的内容执行。但问题是:如何在Java应用程序中运行这种“伪Java代码”,并强制应用程序按照用户的脚本运行?

PS:这种“脚本语言”的形式还可以有其他可能性。它没有必要是“基于 java 库”的语言。

最佳答案

javax.script为了这。 我们可以实现ScriptEngine接口(interface)并使用它的eval函数或者使用已经实现的js引擎,例如:

ScriptEngineManager seManager = new ScriptEngineManager();
ScriptEngine engine = seManager.getEngineByName("js");
button.setOnMousePressed(new EventHandler() {
    @Override
    public void handle(MouseEvent mouseEvent) {     
        try {
            engine.eval(textArea.getText());
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
});

关于java - 如何从 Java 应用程序级别运行自定义脚本代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26562635/

相关文章:

java - 如何创建具有跨运行时持续存在的信息的变量

java - 使用通用函数根据 ArrayList 中的索引对 HashMap 进行排序

Java Swing JTextField.getText 未返回值

java - 使用 javax.tools.JavaCompiler 等

java - GCMIntentService onRegistered 方法除了 regId 之外还需要发送附加信息到我的服务器

java - 我正在制作一本 Java 互动小说,但我的 JTextArea 消失了

java - 在 JavaFx 的 GridPane 中添加新行

java - 为什么替换 FXML 文件后 JavaFx 项目无法运行

java - 多个 SwingNode 导致极度性能下降

java - 在 BorderPane 中居中对象