问题标签 [nashorn]

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 投票
3 回答
2372 浏览

java-8 - nashorn 用绑定替换 Java.type

要从 JS 调用 Java,您可以使用Java.type. 有没有办法在 Bindings 中绑定一个 java 类?

所以替换:

有类似的东西:

我正在开发一个框架,我想为 js 脚本提供很多类,最好不要使用字符串连接eval。目前它会抛出一个带有消息的异常: AwesomeObj 不是一个函数,这是有道理的。

0 投票
3 回答
2527 浏览

javascript - 为什么 Java 8 Nashorn (JavaScript) 取模返回 0.0 (double) 而不是 0 (integer)?

考虑以下代码示例:

为什么它会产生以下输出?

eval = 0.0
eval.getClass() = class java.lang.Double

结果类型java.lang.Double奇怪

如果余数不同于 0,它会正确返回java.lang.Integer,例如5%2返回java.lang.Integer' with value1`。

只有 0 有点特别

在 Firefox 32.0.2(FindBugs 控制台)中尝试相同的 JavaScript 表达式可以正常工作并返回纯 0。

有什么办法可以强制 Nashorn 返回 Integer 类型而不是 Double?

0 投票
2 回答
1338 浏览

java - 如何在 Nashhorn JavaScript 中扩展 Java 类并添加类成员变量

我尝试创建一个扩展 Java 类的类的实例,并在该实例中添加一些类成员变量。这是我的尝试:

然而,Nashorn 解释器抛出这个错误:“TypeError: function noSuchMethod () { [native code] } is not a constructor function”

我究竟做错了什么?当我添加一个自定义类的实例(如 se.datadosen.util.Stopwatch)时,Nashorn 没有抱怨,但是当我尝试添加该 JCheckBox 时它会引发此错误。

(我知道通过 .add() 调用将组件添加到面板中,但这个问题实际上是关于如何将类成员变量添加到子类。

0 投票
1 回答
281 浏览

java - Nashorn 分析器输出格式

Nashorn java 脚本引擎有内置的分析器,可以像这样调用:

jjs -pcs profiled_script.js.

此分析器生成一个名为NashornProfile.txt的文件。这是此文件中的示例行:

这个文件的格式是什么,每一列的含义是什么?

0 投票
1 回答
1598 浏览

java - 来自 Java 的 Javascript - 文档对象

我正在尝试调用一个 java 脚本函数,该函数使用例如创建一个 html div 结构

不幸的是,如果我直接从 Java 运行此脚本而不是在浏览器中运行它,那么我没有窗口和/或文档对象。有人可以给我一些建议如何使用或修改 javascript 代码吗?有没有办法自己创建一个文档对象?非常感谢。

此致

萨沙

0 投票
0 回答
216 浏览

java - Nashorn 有相当于“产量”吗?

JavaScript 中的yield关键字对于 Java 8 的 Nashorn 引擎中的某些脚本任务非常方便。鉴于yield(它在 ES6 中)的前沿性,它可能不包含在 Nashorn 中,但我很好奇是否有类似的东西可用。

0 投票
1 回答
1552 浏览

java - Java 8 Nashorn JJS – javascript 控制台

向专家提问:最新的Java 8 提供了Javascript 引擎Nashorn。众所周知,借助 invokedynamic 的魔力,javascript 被编译为 JVM 字节码,与 Mozilla Rhino 不同的是,它只是解释它。

但是 JJS(javascript 控制台)呢?有没有即时编译?还是只有解释?

谢谢!

0 投票
1 回答
620 浏览

java - Java 8 Nashorn ArrayIndexOutOfBoundsException

如果有的话,我能做些什么来阻止 Nashorn 一直抛出 ArrayIndexOutOfBoundsException ?

这个看似微不足道且正确(此处没有错误)的代码片段导致 Nashorn 出现异常:

文件 test.js:

然后像这样运行脚本:
/usr/lib/jvm/java-8-oracle/bin/jjs test.js

结果:

当我通过脚本引擎在 JVM 中运行文件时,也会发生这种情况。

背景:我正在尝试在 Nashorn 中运行 TypeScript 生成的代码。上面的代码片段是简化的 TypeScript 编译器输出。

操作系统:Linux Mint 17、64 位。爪哇版:

0 投票
0 回答
170 浏览

java - 在 Nashorn 中直接使用基元

我正在开发一个程序,它利用用户脚本来定制大部分体验。设计的后果之一是从 int/double/float 到 Number 和返回的不断转换。该转换导致大量开销,因此是不希望的。例如:

Javascript中引用的类:

Javascript(在 Nashorn 中执行,已放置 FromJava 实例)

有没有办法防止不必要的装箱,或者这是当前 Nashorn 实现所需的开销?

0 投票
2 回答
1594 浏览

javascript - 将对象的成员函数公开为全局函数

例如我有:

有没有办法导出abcdef作为全局函数,以便我可以abc()直接调用而不是调用n.abc()

我的上下文是使用 Rhino/Nashorn 脚本引擎,我想注入一个提供全局函数的“全局”对象。