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

java - Nashorn NativeDate 转换为 java.util.Date

Date在 Java 8 上使用 Nashorn将 Javascript 对象返回给 Java 时,如下所示:

通过以下尝试,我得到了例外:

  1. Date javaDate = (Date)js;

    jdk.nashorn.api.scripting.ScriptObjectMirror cannot be cast to java.util.Date

  2. Date javaDate = js.to(Date.class);

    Cannot cast jdk.nashorn.internal.objects.NativeDate to java.util.Date

  3. Date javaDate = (Date)ScriptUtils.convert(js.to(NativeDate.class), Date.class);

    Cannot cast jdk.nashorn.internal.objects.NativeDate to java.util.Date

回到 Rhino,我只是在使用context.jsToJava(nativeDateObj, Date.class);.

有什么想法可以在返回 Java 时实际转换这个 NativeDate 吗?

PS 如果我执行 js.toString() 那么它会给我“[Date 2012-01-01T19:00:00.000Z]”。我想我可以正则表达式解析...但是为什么-哦-为什么...

0 投票
3 回答
2324 浏览

java - 使用可变参数调用重载方法时出现 Nashorn 错误

假设以下 API:

以下 Nashorn JavaScript 代码段将失败:

将调用第一个方法而不是第二个。这是 Nashorn 引擎中的错误吗?

作为记录,这个问题之前在 jOOQ 用户组上报告过,其中方法重载和可变参数被大量使用,并且这个问题可能会导致很多麻烦。

关于拳击

可能有人怀疑这可能与拳击有关。它没有。当我这样做时也会出现问题

和:

接着:

0 投票
2 回答
1867 浏览

java - 如何从java 8中的js函数获取数组输出?

我在文件 test.js 中有以下方法:

我想将一个数组从 java 传递给这个函数,并在 java 中获取 js 输出数组。我使用了以下java代码:

我能够看到avg js函数的输出,但我不知道如何从 java 中的 js avg 函数获取 js 输出数组

任何支持表示赞赏。

最好的问候, Aurelian

0 投票
1 回答
1270 浏览

java - 在 Nashorn 中将 URLConnection 转换为 HttpUrlConnection

我有一些代码:

这会引发异常:TypeError: sun.net.www.protocol.http.HttpURLConnection: http://twitter.com/ is not an Object

任何人有任何想法如何处理这个?

0 投票
1 回答
375 浏览

java - Nashorn 可写属性

我正在尝试在 Java8 的 Nashorn 中的对象文字中使用不可写属性,如下所示:

代码打印 200 我期待一个错误,因为我已将 x 定义为不可写。

如果我使用 Object.defineProperty() 函数来创建属性或将属性设置为不可写,它就可以工作。正如预期的那样,以下代码会导致错误:

我的问题是为什么在表达式中将可写属性设置为 false 在{ x: {value: 100, writable:false}}第一种情况下不起作用?是 Nashorn 错误还是我遗漏了什么?

0 投票
1 回答
1062 浏览

java - 在多个 nashorn ScriptEngines 之间共享 JavaScript 数组和对象

我在使用 nashorn 时遇到问题,我不太了解原生构造函数的工作原理(对象、数组等)。

我的问题涉及应用程序生命周期中的多个 ScriptEngine,其中一些可以创建函数。

我尝试在新的 ScriptEngines 中使用这些函数,问题是我无法检查对象是否属于给定类型(array instanceof Array),因为该 Array 不是由该实例的 Array 构造函数生成的。

这是一个复制它的测试:

我读了这篇文章https://wiki.openjdk.java.net/display/Nashorn/Nashorn+jsr223+engine+notes并试图像这样解决它,但仍然没有运气

你知道如何让它工作吗?

0 投票
1 回答
3781 浏览

javascript - 如何使用 Nashorn 调试 JavaScript 程序?

我需要能够调试 Nashorn 运行的 JS 代码,即:

现在我需要在 JS 文件中添加一个断点,并且能够以编程方式单步执行这些行(实现一个调试器)。

我知道 IntelliJ 和 NetBeans 实现了这一点,所以它应该是可能的,但我在 Nashorn 中找不到任何允许步进和/或映射行或变量的 API。

任何建议/链接都将受到欢迎。提前致谢。

0 投票
1 回答
1871 浏览

java - Nashorn 启动缓慢可以克服吗?

我已经将 Rhino 用于图形内部的脚本组件。在该项目中有大约 200 个独立运行的小脚本。启动应用程序时,脚本应立即全速运行。Rhino 的表现已经足够了,但是由于 Oracle 建议迁移到 Nashorn,我面临着两难境地。

下面的图片显示了 Rhino 和 Nashorn 在大约 15,000 次脚本调用时的负载差异。Nashorn 的启动缓慢是我最大的问题。

请注意,这又回到了 JDK 1.8.0。JDK 1.8u5 类似

发动机性能比较

我希望图片清楚。

这是我如何使用 ScriptEngine 的概述:

  • 我正在使用一个脚本引擎实例,
  • 我为每个脚本创建一个 CompiledScript 对象,
  • Swingworker 执行 CompiledScript.eval() 一次。
  • SwingWorkers 每半秒启动一次。
  • 每个 CompiledScript 都有自己的 SimpleScriptContext 实例,每次执行都会重用该实例。

下面我包含了一个运行时配置文件,说明引擎随着时间的推移有多忙; 在此处输入图像描述

有谁知道如何克服 Nashorn 的启动缓慢?


2015年 4 月 15 日更新
在 Java8u45 上使用 200 个单独的脚本运行相同的测试。
性能要好很多!在 Java7 上运行速度与 Rhino 一样快。

0 投票
1 回答
199 浏览

java-8 - Java 8,将 Nashorn 与 Java 8 紧凑型配置文件结合使用

是否可以将Nashorn(Java8 的新 JavaScript 引擎)与三个 Java 8 紧凑型配置文件中的每一个一起使用?

0 投票
1 回答
1340 浏览

java - 在 Nashorn 中执行 javascript 时找不到文件异常

我是 nashorn 引擎的新手。在我的 java 代码中,我在 filereader 中指定了 javascript 路径,但它在运行时抛出了 filenotfoundexception。如果我将我的 javascript 放在桌面并给出该位置,我的代码是有效的。但是如果我把我的 javascript 函数放在一个项目中的文件夹不起作用会引发文件未找到异常。这是我的错误代码

这是我的工作代码

我正在使用 java 独立应用程序。我的代码

nashorn1.js

任何帮助将不胜感激!!