问题标签 [graaljs]

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 回答
154 浏览

java - 用于 javascript 事件处理程序的主机对象

我想允许 JavaScript 注册事件,语法如下

event对象提供不同的方法,具体取决于是什么'eventName'(取决于我想为其添加处理程序的事件类型)。

我需要为object和创建主机对象event,我假设需要的类必须object看起来像

如果有两种类型的事件。

但我不知道如何让 graalvm 自动选择正确的on方法,也不知道第二个参数使用什么类型(它必须是一个 JavaScript 匿名函数,它接受某个类型的单个参数,并且以后必须由我的 Java 代码运行)。

如何存储 JavaScript 匿名函数

作为某种 Java Runnable,并确保 GraalVM 知道on根据第一个字符串参数的值使用哪种方法(因为event传递的对象对于不同的事件会有所不同)。

我认为这可能是一个超级复杂的问题,我发现正确措辞很棘手。

我想为 JavaScript 创建一种方法来注册事件处理程序,这些事件处理程序是稍后将使用某些参数调用的函数。

0 投票
1 回答
669 浏览

javascript - Graal Javascript - 线程安全

在多线程应用程序(例如每个 servlet 请求)中使用 Graal.js 的推荐方法是什么?我们像这样使用 Graal.js

我们是否应该为每个执行线程提供唯一的上下文/绑定。这可以通过上下文/绑定对池或使用 threadlocal 来完成。这是正确的方法吗?

0 投票
1 回答
257 浏览

graalvm - 使在 Chrome 中调试 graaljs 成为可能的神器

我正在尝试在 graaljs 中采用调试:

java.lang.IllegalArgumentException: Could not find option with name inspect.

我的build.gradle依赖项如下所示:

而且我绝对记得曾经我应该添加另一个依赖项,以便可以在 chrome 中进行调试 - 但是我不记得 - 或者在任何代码源或文档中找到 - 我应该添加什么作为依赖项

0 投票
1 回答
623 浏览

graalvm - 是否可以将预编译的 js 存储和加载到 org.graalvm.polyglot.Context

有什么方法可以将 javascript 源代码转换为一些预编译的声明,可以以某种方式存储和加载,org.graalvm.polyglot.Context而不是将其评估为原始字符串?像--persistent-code-cache在 nashorn 中没有记录的东西。

0 投票
3 回答
871 浏览

graalvm - 如何将 Map 从 Java 传递到 graal.js?

我在 Scala/Java 中有一个 Map 我希望在 graal.js 引擎上运行的 Javascript 中可见。

后来,graal.js 中的一个 Javascript 函数被调用:

其中 bindFn 是一个编译函数(如下),而 args 是一个包含我的 Thing 对象的 1 元素列表。

Javascript:

thing.foo() 的输出有效,但所有其他输出在 Javascript 中解析为“foreign {}”。它们在地图中都没有任何值。

如何获取在 graal.js Javascript 代码(最好是原生到 Javascript)中可见的 JVM 上创建的 Map 数据?

0 投票
1 回答
572 浏览

java - 等价于 graal.js 脚本引擎中的 Nashorn 的 importPackage

我正在将旧代码从 JDK 8 迁移到 JDK 12。

在这个过程中,我注意到使用脚本引擎importPackage时不存在。用于脚本引擎"graal.js"时存在。"javascript"

有什么方法可以实现相同的功能"graal.js"吗?GraalJS 存储库上的 Nashorn 迁移文档没有涵盖这一点。

0 投票
0 回答
2057 浏览

javascript - 用 graalVM 替换 nashorn

我正在将 Javascript 引擎从 Nashorn 迁移到 GraalVm,​​但无法实例化 GraalJSScriptEngine/ScriptEngine。我尝试了不同的方法:

我收到以下错误:

它在执行 ^ 时返回 null。ScriptEngineManager我还注意到实例中只有一个工厂(Nashorn) 。

我在类路径中添加了 truffle-api jar 并使用 VM 选项运行它:-ea -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -Dpolyglot.js.nashorn-compat=true

我在具有以下附加依赖项的 Java 13 上运行它:

0 投票
1 回答
1221 浏览

graalvm - GraalVM Polyglot 无法加载 Java 类

想要从 Nashorn 迁移到 GraalVM。安装 Graal VM CE

测试应用

例外:

怎么了?

0 投票
4 回答
3009 浏览

java - 在 GraalVM Polyglot 上下文中从 JavaScript 访问 Java 对象

在 GraalVM CE 上运行。

情况1:

结果:

为什么?

据我所知,d正确通过:

返回"HelloWorld"

案例二:

例外

但是getName是公开的……怎么了?

0 投票
1 回答
1070 浏览

java - 使用 graal.js 通过 Java 访问 JavaScript 数组

我正在将一个项目从 Nashorn 迁移到 graal.js。该项目使用了大量脚本(超过 3,400 个),并且在 Java 端有一个调用方法的函数;该方法返回一个 JavaScript 对象列表。

以前使用 ScriptUtils 在 Nashorn 上运行良好。这段代码是在我拿起它之前由从事该项目的开发人员编写的:

如何使用 graal.js 通过 Java 访问数组?我试过使用Value.asValue(p)as(MyObj[])无济于事。我还尝试遵循 Nashorn 迁移指南,他们建议将对象转换为 List 或 Map,但也无济于事。

我知道一个解决方案,我必须重写脚本以仅使用new Java.type('java.util.ArrayList');并返回 aList而不是数组 - 但是有成千上万的脚本,重写所有脚本将非常乏味。