问题标签 [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.
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()
?
javascript - 在 ES4X/Graal 中使用重载参数扩展 Java 类和覆盖方法
我正在尝试使用 ES4X/Graal 在 JavaScript 项目中扩展 Java 类。我要扩展的类具有需要重写的带有过载参数的方法。我知道您可以通过使用方括号表示法并指定类型(下面的示例)来调用特定的 Java 方法,但显然,根据 Graal/Oracle/Nashorn 文档,在覆盖时无法指定参数类型。因此,如果您有以下情况:
您可以像这样在 JavaScript 中调用任一方法:
但是,在扩展时,您只能执行以下操作:
我希望能够仅扩展其中一种method(...)
方法。那么具有不同返回类型的重载方法呢?
谢谢!
java - 在 graal 上下文中添加到静态类 Math 的绑定
我用例如
为我的 javascript 定义一个变量。
我怎样才能暴露Java的Math
“”“”对象“”“”?
我做不到
也不
(bc 构造函数是私有的)
javascript - 不在 GraalVM JS 运行时?
我21.0.0
在 Nashorn 兼容模式下通过 Maven 使用最新 () 版本的 GraalVM for JavaScript。
在注意到类似的函数和类似Java.addToClassPath
的对象Polyglot
不存在后,我运行了此处显示的示例代码:
输出:
这对我来说看起来很奇怪。如何访问上述函数和对象?
谢谢。
java - Graal-js 抛出文件系统提供程序错误
我正在尝试运行简单的代码 - 添加了本文档中提到的所有依赖项:https ://github.com/graalvm/graal-js-jdk11-maven-demo/blob/master/pom.xml
我仍然看到以下错误:
node.js - 为什么 GraalVM-node 找不到我的 jar 文件?
我试图让我的 Node.js 代码调用我的 Java 代码,但是当我运行时
我回来
- 当 Graal-node 是选项的参数时,为什么 Graal-node 认为我的 jar 是节点模块
vm.cp=
? - Graal-node 似乎正在破坏该
--vm.cp=
选项 - 我已经检查了几次jar文件的文件系统路径,它确实在那里
- 还有什么我在某处缺少的东西吗?
- 我可以从 Node.js 调用 Java 库,但现在我想调用我自己的代码......
我的 Graal 版本是
任何想法将不胜感激......
经过更多调查并运行命令
与我一直在阅读的所有文档和示例相反,似乎没有任何--vm.cp=
选择。
javascript - 使用 GraalVM 在 Java 中读取/加载 Javascript 时如何退出无限 JS 执行循环?
我在 graalVM 文档中找到了沙盒选项作为设置 sandbox.MaxCPUTime 的一种方式,以限制线程运行的时间 - https://www.graalvm.org/reference-manual/embed-languages/
我试过以下代码 -
由于错误,这对我来说一直失败 -
有没有更好的方法来实现这一点,或者我可以让这些沙箱选项起作用?
graalvm - graal js解释器无法捕获自定义新错误
对我来说,这总是崩溃:
即永远不会到达catch 块,第一个错误似乎是停止程序。
如何让 GraalVM JavaScript 解释器捕获这样的嵌套错误?
java - 将java对象传递给js时Graalvm未知标识符
我正在尝试运行这个 Graalvm 示例代码:
我得到了这个例外:
我是 graalvm 的新手,我做错了什么?我正在关注文档中的这个演示(请参阅主机互操作性部分): https ://www.graalvm.org/sdk/javadoc/
javascript - 使用 Graalvm js-engine 将 js 外部库添加到嵌入式 Camunda
我正在尝试使用带有spring boot的java嵌入式camunda通过DMN中的JS实现一些复杂的业务验证逻辑。为了避免使用已弃用的 Nashorn 并添加 ES6 支持,我已将其添加到项目 graal js 引擎中。看起来它工作得很好,但我不知道如何将自定义函数添加到 js-script 引擎的上下文中。假设我的资源文件夹中有 index.js 和导出的函数,我怎样才能注册这样的扩展以便能够在 camunda 中使用它?