问题标签 [scriptengine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
144 浏览

java - 反射可以将类绑定到新名称吗?

我试图让我的程序的用户重命名类中的类和方法。新名称可以在运行时读入和配置,它们将使用 Java 脚本引擎以脚本语言调用这些类和方法。我需要一种将它们的新名称绑定到类和方法的真实名称的方法。我一直在研究反射,但我认为这不能为我提供我需要的能力,或者这甚至可能吗?

前任:

然后也许Paython说

请告诉我这是否不可能!

0 投票
1 回答
6532 浏览

java - 通过 Java ScriptEngine 在 JavaScript 中使用 jar

我需要在 JavaScript 中使用 jar 文件中的类。我正在通过 Java ScriptEngine 使用 JavaScript,并且想做一些类似于我在这里使用 Jython 所做的事情,

当我使用 Jython 执行此操作时,它可以正常工作,并且 python 文件可以使用 jar 文件中的 api 类。

0 投票
1 回答
9759 浏览

javascript - JavaScript 可以使用 jar 文件中的类吗(非 Internet 使用)

我在 jar 文件中有一个 API,但是如何在 JavaScript 中使用 jar 中的类?当我尝试导入它们时,

它不起作用。这不会在浏览器或互联网上使用。

更新:

我正在使用 Java ScriptEngine 将我们的 API 扩展到所有 JSR-223 脚本语言。在 Java 应用程序中,我读取了一个 JavaScript 文件,然后使用 ScriptEngine 执行该文件。我需要 JavaScript 文件使用来自 jar 文件的 API 中的类。我尝试在运行 ScriptEngine 时在类路径中设置 jar,但它仍然找不到使用上述代码的类。不过,这在 Jython 中运行良好,因为在 Jython 中在类路径中设置 jar 后使用 jar 文件中的类没有问题。

0 投票
2 回答
1228 浏览

java - 为什么 Java Nashorn __DIR__、__LINE__ 和 __FILE__ 为空?

我正在尝试在由 Java Nashorn Engine (JDK 8) 编译和评估的 JavaScript 文件中获取__DIR__,__LINE____FILE__ Nashorn 全局变量。

但是,它们都返回NULL ...

它们是否与某些特定的 Nashorn 配置有关?它没有在文档中说明任何其他配置以使它们正常工作。

0 投票
3 回答
2277 浏览

java - 如何从 java 代码中调用 window.atob() javascript 函数?

我正在尝试使用犀牛。我想使用window.atob(param)java 代码中的 javascript 函数。首先有可能吗?这是我尝试过的。

我收到以下异常。

我知道我可以使用 java 进行解码,但有人可以告诉我如何使用 rhino 进行解码吗?

0 投票
1 回答
418 浏览

scala - Scala 2.11.2 ScriptEngine 对于 .getEngineByName("scala") 为 Null

我正在使用 IntelliJ IDEA Scala 工作表。(斯卡拉 2.11.2)

我正在尝试为 Scala 获取 ScriptEngine。

但我得到null

如何在 Scala Worksheet 中获取 Scala ScriptEngine?

0 投票
2 回答
2637 浏览

scala - Scala 2.11.2 ScriptEngine 抛出错误

我正在尝试在 InteliJ IDEA Scala Worksheet (Scala 2.11.2) 中运行 Scala ScriptEngine

下一个代码:

抛出错误:

build.sbt 如下:

包括所有需要的依赖项,我不明白为什么它不起作用。

Eclipse Luna + Eclipse IDE 4 中的相同项目工作正常!

如何在 InteliJ IDEA 中运行它?

0 投票
1 回答
1079 浏览

java - 如何销毁 Java ScriptEngine 实例?

我正在使用 Java 8。我不是 Java 专家(自 10 年前大学以来就没有看过 Java)

我创建了一个 ScriptEngine 的实例(如果重要的话是 Nashorn)。我用它来评估几个 javascript 文件。

该脚本在它自己的小 javascript 世界中非常愉快地运行。我喜欢它。

我还有一个 File System WatchService 正在运行,以防我的一些 java 脚本被修改。当它们被修改时,我创建一个新的 ScriptEngine,并使用新的 ScriptEngine 对象评估新版本的 javascript 文件。

我的问题是,一旦我创建了新的脚本引擎,我就无法“杀死”旧的脚本引擎。旧脚本无限期地继续运行。

我真的很想释放旧 scriptEngine 对象正在使用的资源。而且我希望它停止做它正在做的事情(因为如果他们都尝试做同样的事情,它可能与新实例发生冲突)。

那么......我如何完全消除旧的 ScriptEngine,包括其中产生的任何线程?

0 投票
1 回答
288 浏览

java - 单步执行由 ScriptEngine 评估的 JavaScript 代码

我有一个桌面 Java 应用程序,它本质上是多个线程的调度程序。每个线程负责读取 JavaScript 文件并解释/评估 JavaScript 代码。JavaScript 编写无限期运行的复杂任务,控制由父 Java 应用程序公开的 Java 对象。

我对此没有任何问题。我创建了一个线程来读取相应的 JavaScript 文件,然后对其进行评估。就像是:

somescript.js 文件可能包含以下内容:

因此,该行:

...可以很好地运行很长时间。

我需要的是某种方式让我的 TaskThread 对象在每次在脚本代码中评估新的表达式/函数时得到通知。这是必要的,因为由于 engine.eval(theScriptCode) 将运行很长时间,我希望 ScriptEngine 定期产生。

我可以通过使 TaskThread 对象对 MyScriptableObjectClass() 的实例可见来做到这一点。就像是:

然后,在 MyScriptableObjectClass 的定义中:

似乎必须有一种更优雅的方式来做到这一点 - 特别是因为这只会让我在调用 Java 对象的方法期间屈服。可能有很长一段时间 JavaScript 正在执行而不调用任何 Java 对象成员。

我想要的是能够做一些事情,比如向 ScriptEngine 对象添加一个侦听器,以便在每次评估新表达式时触发。看起来这应该很简单,但我已经为此旋转了好几天。

有任何想法吗?

0 投票
2 回答
1382 浏览

java - Java 将选择哪个 JS 脚本引擎?

ScriptEngineManager.getEngineByName 查找并为给定名称创建一个 ScriptEngine。

Rhino 将自己注册为“js”、“rhino”、“JavaScript”、“javascript”、“ECMAScript”和“ecmascript”

Nashorn 将自己注册为“nashorn”、“Nashorn”、“js”、“JS”、“JavaScript”、“javascript”、“ECMAScript”和“ecmascript”

如果我使用 Nashorn 和 Rhino 都注册的“js”之类的名称,将使用哪个脚本引擎?它会在 Java 8 和 Rhino 上使用 Nashorn 吗?