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

java - 将 Nashorn 与其他 Web 应用程序框架一起使用

在 JavaOne 2013 中,我参加了关于 Project Nashorn 的研讨会。我知道后很惊讶。从 JavaScript 调用 Java,反之亦然。

但是我仍然不清楚一个问题,即我们如何使用 Nashorn 来支持 JSF、ADF Faces 或 Wicket 等 Web 应用程序框架。如果有人给出任何指示,那将是非常可观的。

0 投票
2 回答
2337 浏览

java - 在 JDK 8 中,Nashorn 和新的 JSON-P (javax.json) API 之间是否有任何计划的互操作性?

最近我查看了 Nashorn 和新的 JSON-P API (javax.json)。由于两者显然都面向 JSON,它们之间是否有任何计划的互操作性(即 Nashorn 是否包括对 javax.json.spi.JsonObject 的本机支持)?

编辑#1

@维克加莫夫,

通过互操作性,我的意思是一种在运行时将 javascript / JSON 对象注入脚本的方法。我知道 Nashorn 允许来自其他 JVM 语言的对象,例如标准 Java 对象。但是,如果有人想使用 100% javascript,则需要一种简单的方法来从外部创建纯 JS 对象,看起来jlaskeyhannesw(根据 JSObject 的评论)和 Oracle 的其他人/女孩提供了一个实现这一目标的方法。

事实证明,他们还使用 ScriptObjectMirror 为 JSObject 提供了默认实现

0 投票
1 回答
199 浏览

java - 将 javascript Web 应用程序链接到 java

我正在尝试让 java 和 javascript 相互交谈。理想情况下,我希望它们共享对象,但 java 应用程序调用 javascript 函数就足够了。我试过 Rhino 但有点挣扎,因为它似乎无法在正在运行的 js 引擎中调用函数(也许我只是不知道怎么做?)。有关如何使此链接发生的任何提示?性能是一个问题,但不是非常关键。

基本上; 我有一个使用 javascript 动态更新页面内容的 Web 应用程序。页面的内容是通过 java 代码创建的,所以我需要一种方法让 java 代码告诉 javascript 什么时候发生了变化以及发生了什么变化。

谢谢

LiveConnect 似乎可以解决问题,但小程序会导致安全漏洞。Java8 中的 Nashorn 会和 Rhino 做同样的事情,还是能够保持运行的 JVM 并监听调用?

0 投票
5 回答
9034 浏览

commonjs - 如何将 CommonJS 模块与 Oracle 的新 Nashorn JS 引擎一起使用?

我正在为 Nashorn 寻找一个模块系统。据我所知,CommonJS 是涉及 JS 模块的方法。我查看了列表(此处此处),几乎没有发现 Java 的 CommonJS 实现方式。

Narwhal不再活跃,它的文档不再托管在 GitHub 上。是否有支持 Java 的现有 CommonJS 实现,或者我应该开始一个新项目?

0 投票
3 回答
1305 浏览

javascript - Java Nashorn 中的(反)引用方法变体

考虑代码:

示例 1

这行得通。

但这不起作用:

示例 2

我假设,这是因为fork这里不是一个 JS Function 实例,它实际上是一个实例jdk.internal.dynalink.beans.SimpleDynamicMethod

我尝试使用fork.apply(executor,function() { ... });,但很自然,SimpleDynamicMethod 没有apply.

实际上,为什么示例 2 不起作用,而示例 1 起作用?

这仅仅是 Nashorn 的一项福利吗?是否有比示例 1 更好的方法来定义 fork() 函数?

更新

在示例 2 中,

print(typeof fork);报告function

print(fork)报告[jdk.internal.dynalink.beans.SimpleDynamicMethod Future java.util.concurrent.AbstractExecutorService.submit(Callable)]

例外是(第 13 行阅读fork(function() {

0 投票
2 回答
406 浏览

javascript - 通过 nashorn 实例化类

我正在考虑用 javascript / nashorn 替换我用于配置的所有 xml 文件和构建器。假设我有一个作为构建器样式配置对象的 java 类

我想直接在 javascript 中实例化这个类,并让 nashorn 返回给我它的一个实例。我想用javascript编码它

然后最后读取文件,将其传递给脚本引擎,并让它评估对象作为配置的实例。

  • 这可能使用类似 json 的语法吗?
  • 我不会有问题使用 Packages.Configuration / Java.type("Configuration"); Java.extend(),但尚未取得任何成功。
  • 还是我必须为返回值制作/使用合适的阅读器?
0 投票
2 回答
7404 浏览

java-8 - Nashorn JS 对象对 java.util.Map 有效吗?

我有java方法

从 JS 调用这个方法

例外:

但在 Nashorn 文档“Java 和 JavaScript 之间的数据类型映射”中说“每个 JavaScript 对象也是一个 java.util.Map,因此接收地图的 API 将直接接收它们”。

我究竟做错了什么?

0 投票
9 回答
15523 浏览

java - 安全的 Nashorn JS 执行

如何使用 Java8 Nashorn 安全地执行一些用户提供的 JS 代码?

该脚本为一些基于 servlet 的报告扩展了一些计算。该应用程序有许多不同的(不受信任的)用户。脚本应该只能访问 Java 对象以及由定义的成员返回的对象。默认情况下,脚本可以使用 Class.forName() 实例化任何类(使用我提供的对象的 .getClass() )。有什么方法可以禁止访问我没有明确指定的任何 java 类?

0 投票
1 回答
104 浏览

javascript - Nashorn:奇怪的包裹退回

在 Java 的 Nashorn 引擎中,当你评估代码时,如果你这样做

e 将为空。

但是,我发现的一件事是,如果我这样做

e(以及 anothervar)将是 org.bukkit.event 包。

为什么 Nashorn 有它,所以在我访问带有点符号的包后,它会开始使用括号符号?

0 投票
1 回答
1049 浏览

java - 如何在 Nashorn 中访问超类成员

我正在尝试在 JavaScript 中扩展一个具体的 Java 类(来自 javafx 库的 TableCell),然后在超类上调用一个方法。我用 Rhino 引擎做这个没有问题,但它在 Nashorn 上失败了。我的代码是:

除了上面在8 月添加到 nashorn 的“super$setText”语法之外,我还尝试了 nashorn 指南中访问超类方法中Java.super提到的调用:

当填充相应的表视图时,这些片段都失败了。cell.super$setTextthrows'null' has no such function "super$setText"这让我觉得很奇怪,因为我已经粘贴了该方法的全部内容 - 封闭变量应该不可能cell变为 null。Java.super(cell).setText抛出“不能调用未定义。”

我还尝试了方便的属性语法cell.text = item,它似乎设置了一个新的 javascript 字段而没有抱怨,但没有在表格视图中显示文本。

我的 JDK8 版本是最近的

我无法辨别这是一个 nashorn 错误,还是我的来源有问题。这是正确的语法吗?我还想知道它是否重要,setText它没有定义在 上TableCell,而是它的超类之一。nashorn 是否只能向上遍历层次结构?