问题标签 [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 回答
131 浏览

java - SimpleBindings 与 ScriptEngine.createBindings() 之间的区别(Graal 和 Nashhorn)

注意,我同时使用 Nashhorn 和 Graal,所以下面使用的可能是GraalJSScriptEngine或 nashhorn 引擎ScriptEngine的实例。

当我createBindings使用GraalJSScriptEngine引擎调用时:

它返回一个GraalJSBindings对象,该对象具有close关闭与绑定关联的上下文的函数:

在我的应用程序中,我必须确保在每次使用后关闭这个上下文,通过GraalJSBindings.close(),这是为了防止上下文没有被 GC 处理的内存泄漏。例如:

我注意到还有另一种创建绑定的方法,不是通过引擎,而是通过显式实例化一个SimpleBindings对象。我想知道以下有什么区别,即我可以简单地替换scriptEngine.createBindings()new SimpleBindings()并避免像我上面所做的那样关闭绑定吗?或者使用有什么好处scriptEngine.createBindings()

0 投票
1 回答
180 浏览

javascript - 在 ES4X/Graal 中使用重载参数扩展 Java 类和覆盖方法

我正在尝试使用 ES4X/Graal 在 JavaScript 项目中扩展 Java 类。我要扩展的类具有需要重写的带有过载参数的方法。我知道您可以通过使用方括号表示法并指定类型(下面的示例)来调用特定的 Java 方法,但显然,根据 Graal/Oracle/Nashorn 文档,在覆盖时无法指定参数类型。因此,如果您有以下情况:

您可以像这样在 JavaScript 中调用任一方法:

但是,在扩展时,您只能执行以下操作:

我希望能够仅扩展其中一种method(...)方法。那么具有不同返回类型的重载方法呢?

谢谢!

0 投票
2 回答
148 浏览

java - 在 graal 上下文中添加到静态类 Math 的绑定

我用例如

为我的 javascript 定义一个变量。

我怎样才能暴露Java的Math“”“”对象“”“”?

我做不到

也不

(bc 构造函数是私有的)

0 投票
1 回答
80 浏览

javascript - 不在 GraalVM JS 运行时?

21.0.0在 Nashorn 兼容模式下通过 Maven 使用最新 () 版本的 GraalVM for JavaScript。
在注意到类似的函数和类似Java.addToClassPath的对象Polyglot不存在后,我运行了此处显示的示例代码:

输出:

这对我来说看起来很奇怪。如何访问上述函数和对象?
谢谢。

0 投票
1 回答
61 浏览

java - Graal-js 抛出文件系统提供程序错误

我正在尝试运行简单的代码 - 添加了本文档中提到的所有依赖项:https ://github.com/graalvm/graal-js-jdk11-maven-demo/blob/master/pom.xml

我仍然看到以下错误:

0 投票
2 回答
170 浏览

node.js - 为什么 GraalVM-node 找不到我的 jar 文件?

我试图让我的 Node.js 代码调用我的 Java 代码,但是当我运行时

我回来

  1. 当 Graal-node 是选项的参数时,为什么 Graal-node 认为我的 jar 是节点模块vm.cp=
  2. Graal-node 似乎正在破坏该--vm.cp=选项
  3. 我已经检查了几次jar文件的文件系统路径,它确实在那里
  4. 还有什么我在某处缺少的东西吗?
  5. 我可以从 Node.js 调用 Java 库,但现在我想调用我自己的代码......

我的 Graal 版本是

任何想法将不胜感激......

经过更多调查并运行命令

与我一直在阅读的所有文档和示例相反,似乎没有任何--vm.cp=选择。

0 投票
1 回答
264 浏览

javascript - 使用 GraalVM 在 Java 中读取/加载 Javascript 时如何退出无限 JS 执行循环?

我在 graalVM 文档中找到了沙盒选项作为设置 sandbox.MaxCPUTime 的一种方式,以限制线程运行的时间 - https://www.graalvm.org/reference-manual/embed-languages/

我试过以下代码 -

由于错误,这对我来说一直失败 -

有没有更好的方法来实现这一点,或者我可以让这些沙箱选项起作用?

0 投票
1 回答
140 浏览

graalvm - graal js解释器无法捕获自定义新错误

对我来说,这总是崩溃:

即永远不会到达catch 块,第一个错误似乎是停止程序。

如何让 GraalVM JavaScript 解释器捕获这样的嵌套错误?

0 投票
1 回答
213 浏览

java - 将java对象传递给js时Graalvm未知标识符

我正在尝试运行这个 Graalvm 示例代码:

我得到了这个例外:

我是 graalvm 的新手,我做错了什么?我正在关注文档中的这个演示(请参阅主机互操作性部分): https ://www.graalvm.org/sdk/javadoc/

0 投票
1 回答
123 浏览

javascript - 使用 Graalvm js-engine 将 js 外部库添加到嵌入式 Camunda

我正在尝试使用带有spring boot的java嵌入式camunda通过DMN中的JS实现一些复杂的业务验证逻辑。为了避免使用已弃用的 Nashorn 并添加 ES6 支持,我已将其添加到项目 graal js 引擎中。看起来它工作得很好,但我不知道如何将自定义函数添加到 js-script 引擎的上下文中。假设我的资源文件夹中有 index.js 和导出的函数,我怎样才能注册这样的扩展以便能够在 camunda 中使用它?