问题标签 [java-scripting-engine]

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 投票
1 回答
1043 浏览

javascript - Rhino:能够暂停、保存状态和恢复 javascript

我正在使用 Rhino 通过 Java 解释 javascripts。我的用例需要这些 javascript 进行(多个)服务调用(RESTful/Webservices/HTTP GET/POST)。其中一些服务调用本质上是异步的(具有 24 小时 SLA)。

我希望能够在这种情况下暂停我的脚本的执行,序列化状态(将其保存在 S3 上,并将密钥传递给异步服务的有效负载,服务在回调时返回)并在我得到时恢复执行结果从服务中返回。

我面临的挑战是 ContinuationPending(扩展 RuntimeException)不可序列化(因为 Context 不可序列化)。

问题:有没有其他方法可以存储脚本的状态并从其序列化形式中取回?

Javascript:

爪哇:

0 投票
1 回答
426 浏览

java - 使用 java javascript 脚本 API 操作 HTML 节点

我正在使用运行良好的Java Scripting API。现在我有一个函数,我想<a>从字符串中获取所有标签,然后在返回操纵的字符串之前添加/删除属性。问题当然是,我不能只使用document.getElementsByTagName. 是否有任何简单的选项可以在不经过 regex-hell 的情况下出现在您的脑海中?

请注意,我目前在 Java 7(使用 Rhino)上运行,计划更新到 Java 8(使用 Nashorn),所以我不想使用任何 Rhino 特定的 API。

0 投票
1 回答
1923 浏览

java - 名称为“nashorn”的 ScriptEngine 为空

我正在尝试ScriptEngine使用 name创建"nashorn"

但我总是得到

为什么会这样?文档说:

Nashorn 引擎是与 Java SE 开发工具包 (JDK) 捆绑在一起的默认 ECMAScript (JavaScript) 引擎。

这意味着 Nashorn 引擎是默认引擎,并且必须存在于 JDK 中,不是吗?

0 投票
1 回答
213 浏览

javascript - 在 Microsoft Edge 浏览器中同步调用 java 脚本文件失败。

我有 abc.html 页面,我在其中调用两个 javascript 文件,如下所示: -

在我的 1.js 文件中,我正在使用 ajax 调用加载 3.js 文件,因为我不需要在所有 html 文件中使用 3.js。

我正在通过 ajax 调用加载 3.js 文件,如下面的 1.js 文件所示:-

现在,当我加载我需要 3.js 文件的 abc.html 时。它进入 3.js ajax 调用,但在完成 ajax 调用之前,它进入 2.js 文件方法。

此问题仅在 Microsoft Edge 浏览器中发生。

0 投票
4 回答
42778 浏览

java - 如何确定在脚本引擎中运行的 Groovy 代码中是否存在变量?

如何确定在脚本引擎中运行的 Groovy 代码中是否存在变量?

该变量是由ScriptEngine 的 put 方法放置的

0 投票
1 回答
637 浏览

java - 如果我将我的一个类的对象绑定到脚本引擎,我如何通过脚本引擎将它作为该类的对象访问?

我希望能够将对象传递到ScriptEngineviaput()并能够从脚本引擎中访问其属性和方法。

例如

我怎样才能做到这一点?

0 投票
1 回答
813 浏览

java - Nashorn:JavaScript 表达式评估为使用 lambda 公开的函数引发类转换异常

我有一个带有 Long 类型变量的以下类

我从 JavaScript 调用方法 testLongValue 如下方式

engine.eval("print(jsLong.testLongValue(20))");作品

engine.eval("print(jsLong2(20))");抛出类转换异常

我可以engine.eval("print(jsLong2(20))");为 Long 类型工作吗

异常跟踪

0 投票
1 回答
196 浏览

java - 如何让 OSGiScriptEngineManager 运行

我不是 OSGi 的新手,但显然足够新手。

我想要做的是编写一个 OSGi (Apache Felix) 包并使用 Java 脚本 API (JSR-223) 和例如 Groovy。为此,我安装了 groovy 2.4.12,它已经是一个 OSGi 包,并且我将 Groovy Runtime (2.4.12) 视为 Felix 远程 Shell 控制台中的一个活动服务。

我也理解 Java 的 ServiceLoader API 和 OSGi 的包之间的冲突。这是 OSGi 从根本上与 JSR-223 脚本语言发现不兼容吗?指的是一篇博客,指出 Felix 已经找到了解决方法。

都好。但是之后。我需要导入什么才能使用该 OSGiScriptEngineManager 片段?

0 投票
1 回答
71 浏览

java - 有没有办法从 Java 中运行 python 中的连续命令?

我想要做的是,我有一个用 Java 编写的语义解析器,这个语义解析器将输出 Python 中的单行代码(字符串)。我想连续做这个。我搜索的方法是 runtime.exec 或 Jython,我可以在其中运行整个脚本。但是我想逐行编写代码并在每一行之后查看结果。

假设我的 Java 程序返回了“import pandas”。然后它将在 python 中运行该行。然后用户进行另一个输入,Java 返回“pandas.read.csv('somefile.csv')”。然后基于我之前的调用“import pandas”,我将在 Python 脚本中运行下一行代码。我想连续执行此操作,因为我的语义解析器根据用户输入在 Python 中生成单行代码。

理想情况下,我会让 Java 程序运行 Python 解释器并一一提供每个代码并查看结果。但我不完全确定这是否是一种可行的方法。明显的解决方案是在 Python 脚本中逐行添加并运行整个脚本。但这会浪费很多时间。所以如果有什么好的方法,请与我分享。谢谢你。

0 投票
1 回答
173 浏览

java - java脚本引擎中的字符串表达式插值支持

我正在使用 groovy/nashorn 作为 java 引擎,但无法插入字符串。

但我得到了 javax.script.ScriptException。是否支持字符串插值?谢谢