问题标签 [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 投票
0 回答
1550 浏览

c - 从内存加载程序集(嵌入式 Mono 运行时)

我想从内存中加载单声道程序集。因此,我没有使用通常的 mono_domain_assembly_open ,而是使用mono_image_open_from_data。返回的图像和程序集都正常,状态为MONO_IMAGE_OK

但是,当我尝试使用以下方法从程序集中获取类时:

我得到my_class == NULL。当我使用通常的mono_image_open_from_data单声道返回一个有效的类实例。我怀疑该方法无法正确加载所有引用。您有什么建议或解决方法吗?

0 投票
3 回答
4332 浏览

java - 在 java 中使用 ScriptEngine,如何提取函数列表?

使用 Jsoup,我在 html 文件中提取 JavaScript 部分。并将其存储为 java String 对象。

我想使用javax.script.ScriptEngine提取 js 函数中的函数列表、变量列表

JavaScript 部分有几个函数部分。

前任)

我的目标就在下面。

列表函数列表

a b c

列表 varListA

a_1 a_2 ...

列表 varListB

b_1 b_2 ...

列表 varListC

c_1 c_2 ...

如何提取函数列表和变量列表(或者可能是值)?

0 投票
0 回答
878 浏览

java - Java ScriptEngine:验证 Invocable.getInterface(Class ) 返回一个真实的实现

我对将 ScriptEngine 合并到我的代码库中感到非常兴奋,并计划使用它从持久化脚本中动态构建接口实现。

我正在为将脚本数据转换为 Java 接口实例的一般实现编写 JUnit 测试用例。我似乎发现您不需要在脚本中实际实现整个接口,就可以将其视为Invocable.getInterface(Class<?>)该接口的对象。根据文档,getInterface我认为如果没有给出完整的实现,我可以指望它返回 null:

使用Class<?>对象并调用isInstance(Object)结果Invocable.getInterface(Class<?>)似乎总是返回 true。我猜想将动态类型化脚本语言实现映射到静态类型化 Java 接口存在概念上的挑战。但是,如果您尝试在此对象上调用任何未实现的方法,则会出现问题,您会得到一个NoSuchMethodException.

以下是一些有助于说明的代码片段:

测试

转换脚本相关片段

结果

这条线被击中queue.add(""); //Sanity check. Don't want to get here. Throws NoSuchMethodException,或者如果我删除该健全性检查,基本 AssertTrue 会失败,因为它返回一个 Queue 对象。

问题

如何验证从 ScriptEngine/Invocable 的 getInterface(Class) 方法中提取的对象实际上返回了 Class 接口的完整实现?

0 投票
3 回答
6683 浏览

java - 如何将类型 Object 从 engine.eval 转换为类型 int

我的程序接受一个字符串输入并使用engine.eval()来自 ScriptEngine 的导入来计算它。如何将评估值转换为 int 类型?

0 投票
1 回答
1167 浏览

groovy - 从 IDEA 调试在 ScriptEngine 中运行的 Groovy 脚本

在我的应用程序中,我将类路径中的脚本文件加载到字符串中,然后将其传递给 ScriptEngine。但是,脚本文件中设置的断点不会触发。我怎样才能让它工作?我使用 Intellij IDEA。

0 投票
3 回答
965 浏览

java - Java ScriptEngineManager 和 DOM

有谁知道任何ScriptEngine理解/包含隐式DOM对象(如window,document等)的 Java self?我不能使用JavaFX WebEngine,因为我没有开发 JavaFX 应用程序。

0 投票
3 回答
5350 浏览

java - 如何在 Java 中求解字符串中的基本数学方程?

我有一个设置的基本计算器,所以当按下相等按钮时,JTextField 以字符串形式保存,这就是问题所在,它是字符串形式,所以我不知道如何求解方程。我尝试过使用 JavaScript 引擎,但无法弄清楚。有什么帮助吗?

0 投票
2 回答
269 浏览

java - Java SE 6 之前的脚本引擎?

出于某种原因,我必须使用 Java 5。我从 java se 7 开始学习编程,所以我对旧版本不熟悉。

javax.script包,其中包含ScriptEngine类和ScriptEngineManager类在 Java 5 中不存在。但是 Rhino 项目是在 Java 5 之前创建的。所以我想知道javax.script在 Java 6 中引入之前如何使用 Java 脚本引擎?

(我浏览了 Java se 5 API 文档。似乎没有替代ScriptEngine类。所有在线搜索结果都给了我现代代码。)

0 投票
1 回答
893 浏览

java - Java ScriptEngine 和父窗口函数

我正在使用 JavaScriptEngine在程序中的某些条件下从支持 bean 调用 JS 函数。问题是 JSF 页面在 iFrame 中运行。虽然 iFrame 在这个阶段不是真正的问题,但我希望它能够浏览到新页面。为此,我使用了top.window.location并且parent.location他们通过单击按钮将页面加载到 iFrame 之外而没有问题。

这是我为此使用的代码示例:

我已经读过它们是从浏览器本身调用的,而parent.location不是JavaScript。因此,因此,我收到以下错误:top.window.location

它与document.getElementById("someComponent")其他类似的完全一样。而且似乎错误仍然存sun.org.mozilla.....​​在于ChromeIEFF中。

所以问题是:我怎样才能让 JS 函数可能使用parent.location?我想我需要检查使用的浏览器,然后根据浏览器从那里导入或调用某些东西,但我不确定我应该如何去工作。任何可以解决这个问题的线索都会非常有帮助。

提前致谢。

0 投票
1 回答
2677 浏览

java - 如何使用 ScriptEngine 将 Javascript 的输出转换为 Java

有了这个简单的applescript,我可以列出iTunes中所有歌曲的名称

然后我使用 ScriptEngine 将它作为 Java 7 代码运行,但是如何获得脚本的结果很明显,在这种情况下,它只是最后一首曲目的名称。

更新:

http://www.informit.com/articles/article.aspx?p=696621&seqNum=6

但是通过代码更新为

只是输出

因此,您可以清楚地看到脚本的工作原理,因为 eval 显示了最后一首曲目的名称,但我没有从重定向的作者那里得到任何回报。想知道这真的适用于 applescript 吗?

更新 2 我用 Javascript 编写了一个测试,发现设置作者确实有效,所以我认为要么

  1. 在 OSX 上 Java 7 的早期访问版本的 Applescript 脚本引擎(我使用最近的版本 1.7.0_40-ea-b29)有一些问题)
  2. 我的 Applescript 是错误的,即,而不仅仅是nexttrack 的名称,我应该做一些类似nexttrack 的 echo name 的事情,以使其真正进入标准输出。

我想(2)是问题所在,但我找不到任何关于在 Applescript 中输出文本的引用,echo不是有效命令,并且print命令实际上确实尝试打印到打印机而不是打印到 stdout,因为它会在Java或C中。

更新 3 所以我无法让它工作,现在想知道 Applescript 是否只写返回值。我找到了一个使用 stdout 的示例(或者我认为),但我认为这只是一个命名约定,实际上它所做的只是不断地将数据附加到一个变量,并最终返回它。

所以我通过使用存储在文件中的以下脚本,然后在 Java 中使用 engine.eval(new java.io.FileReader(" filename ")

但这实际上并没有解决最初的问题,它的一个问题是,如果有任何错误,那么我不会得到任何回报,而如果它在读取我的 iTuneslibrary 的过程中失败并且我正在使用 stdout,我至少会得到一半数据回来。