迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

从 Java 代码调用外部 JavaScript 函数

作者:迹忆客 最近更新:2023/06/02 浏览次数:

本文将讨论在 Java 程序中包含 JavaScript 源代码以及从 Java 代码调用 JavaScript 函数。


从 Java 代码调用外部 JavaScript 函数

在 Java 中调用 JavaScript 源非常简单。 如果我们开发一个必须使用 JavaScript 的 Java 应用程序,我们将单独创建脚本文件,然后在 Java 源代码中包含并调用它以运行所需的功能。

让我们以下面的场景为例。

首先,我们需要在一个单独的 JavaScript 文件中定义函数,这些函数将在我们的 Java 代码中调用。 我们创建了一个 JavaScript 源代码来执行算术任务,例如将两个传递的值相加。

例子:

var myCalculations = new Object();

myCalculations.addition = function (v1, v2) v1 + v2;

在此 JavaScript 源代码中,我们创建了一个新对象 myCalculations。 在该对象中,我们定义了一个加法函数,它将 2 个值作为参数并将它们相加。

我们需要使用扩展名 .js 保存此源,因为这将是我们的 JavaScript 文档。 要加载该脚本并获取对象,我们需要使用 ScriptEngineManager 的 eval() 函数。

ScriptEngineManager 是默认的 Java 库,可以导入到 Java 代码中。 我们可以使用该库的一个实例来加载脚本。

我们可以加载 JavaScript 文件,如下所示:

String javascriptPath = "drive:/folder/fileName.js";
engine.eval("load('" + javascriptPath + "')");
Object myCalculations = engine.get("myCalculations");

现在我们可以通过名称获取想要的函数,并传入参数,如下所示:

Object addingResult = inv.invokeMethod(myCalculations, "addition", x, y);

下面是一个完整的 Java 程序示例,该程序将使用 ScriptEngineManager 使用 JavaScript 文件。

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class Main {
    public static void main(String[] args) throws Exception {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");

        Invocable inv = (Invocable) engine;
        String javascriptPath = "drive:/folder/fileName.js";
        engine.eval("load('" + javascriptPath + "')");
        Object myCalculations = engine.get("myCalculations");

        int x = 10;
        int y = 5;
        Object addingResult = inv.invokeMethod(myCalculations, "addition", x, y);

        System.out.println("Your addition result will be: "+addingResult);

    }
}

输出:

Your addition result will be: 15

代码解释:

  1. 在上面的 Java 代码中,我们首先导入了一个有用的库 ScriptEngineManager 来加载脚本。
  2. 在 main 函数中,我们创建了一个 ScriptEngineManager 实例,并定义了名为 JavaScript 的脚本引擎。
  3. 现在,我们已经声明了一个字符串变量,它将分配给 JavaScript 文件的路径。
  4. 然后,我们使用 engine.eval() 方法加载该路径。
  5. 现在,我们已经调用了 JavaScript 文件的对象 myCalculations 并使用它来调用该对象的函数。
  6. 最后,我们在函数中传递了 2 个整型值,并使用 Java 默认函数 System.out.println("anything you want to print") 在终端中显示结果。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Do you understand JavaScript closures?

发布时间:2025/02/21 浏览次数:108 分类:JavaScript

The function of a closure can be inferred from its name, suggesting that it is related to the concept of scope. A closure itself is a core concept in JavaScript, and being a core concept, it is naturally also a difficult one.

Do you know about the hidden traps in variables in JavaScript?

发布时间:2025/02/21 浏览次数:178 分类:JavaScript

Whether you're just starting to learn JavaScript or have been using it for a long time, I believe you'll encounter some traps related to JavaScript variable scope. The goal is to identify these traps before you fall into them, in order to av

How much do you know about the Prototype Chain?

发布时间:2025/02/21 浏览次数:150 分类:JavaScript

The prototype chain can be considered one of the core features of JavaScript, and certainly one of its more challenging aspects. If you've learned other object-oriented programming languages, you may find it somewhat confusing when you start

用 jQuery 检查复选框是否被选中

发布时间:2024/03/24 浏览次数:102 分类:JavaScript

在本教程中学习 jQuery 检查复选框是否被选中的所有很酷的方法。我们展示了使用直接 DOM 操作、提取 JavaScript 属性的 jQuery 方法以及使用 jQuery 选择器的不同方法。你还将找到许多有用的

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便