问题标签 [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 投票
0 回答
1630 浏览

java - JavaScript 的 Java 解析器:列出所有函数/变量

我打算在 java 中实现一个 JavaScript 解析器。我知道有几种方法可以做到这一点。有一些视图框架/引擎/解析器可以帮助做到这一点,比如:

  • ANTLR 3/4 : v3 似乎只有一个 js 语法
  • Mozilla Rhino:atm 我可以解析初始(顶部)命名空间上的变量名。但我无法解析嵌套范围,例如对象成员.. 嗯..
  • Nashorn:也许我应该试一试..?

也许:

  • 闭包编译器:恕我直言,这非常好。但不适用于“非谷歌”js-code :) 例如,您必须对您的 javascript 源应用多个编码约定才能使其正常工作..
  • 也许可以调整Packer来做到这一点?是否有Packer的 Java 实现???

有与本文相关的EcmaScript 5.1。这似乎很舒服。但这并不是我要找的……而且仍然没有 java :)

我的问题是:

什么可能/将是解析 JavaScript 的最佳方式:

  • (对象-)函数名称
  • (对象-)成员名称,例如变量

甚至有可能做到吗?

你的方法是什么?对我来说,解析 JavaScript 的所有特殊标记并不是必需的。重要的因素是在一致的上下文中解析函数/变量,以获取如下典型标记:

解析应该能够提供以下信息:

如果节点是函数/变量,则不需要任何直接确定。

0 投票
2 回答
6635 浏览

java - 如何在 Java 对象中取消 javascript (nashorn) 返回的值?

我有以下程序,它在 Java (nashorn) 中执行 Javascript。Javascript 代码正在返回一个对象。

如何在 Java 中访问结果对象中的对象值?最初,我尝试使用result.toString()来获得结果。好像return [Object Object]

有没有办法,我可以将结果返回给result对象,这样我就可以获得相当于result.value, 和result.count(类似于 Javascript) 的值。

0 投票
1 回答
3528 浏览

java - java.lang.ClassCastException:jdk.nashorn.internal.objects.NativeArray 不能转换为 java.lang.Comparable

使用 Nashorn 运行 JavaScript 时

我有

那么在 JavaScript 中使用 Java Collections 的方法是什么?

更新:

感谢 Attila,不是 JS 和 JJS 脚本都产生相同的输出

0 投票
1 回答
947 浏览

java - 如何在 Nashorn 的 javascript 中访问我的类中的方法

在 Nashorn 中,可以访问预定义的 java 类,

同样明智的是,可以在 java 脚本中访问我的类,如果可以,我应该如何在类路径中添加我的 jar 以引用它????

0 投票
3 回答
1032 浏览

java - Java8 Nashorn - ReferenceError:未定义“eu”

我正在尝试从 Nashorn 执行的 JavaScript 调用类的静态方法:

不幸的是,我收到了这个错误:

调用 Nashorn 的类位于 eu.wansdyke... 包中,所以我对此感到有些惊讶。有什么我做错了吗?

0 投票
0 回答
438 浏览

java - Gradle 可以执行 JavaScript(而不是 Java 入口点)吗?

Gradle 可以执行 JavaScript 吗?

虽然 javascript 没有标准插件,但是否可以制作类似的东西JavaExec

原因:使用 Java 8 Nashorn 和 Avatar.js 项目应用程序入口点可以是 JavaScript 文件,而不是 Java。

搜索 Gradle JavaScript 插件提供了面向 Web 的解决方案,例如https://github.com/eriwen/gradle-js-plugin

Gradle相关执行Java类(无需修改build.gradle)

0 投票
1 回答
1080 浏览

java - 运行 Nashorn JavaScript 的 Gradle 任务

是否有用于启动的 gradle/groovy 代码模拟java -Djava.library.path=lib -jar lib/avatar-js.jar helloWorld.js,即使用 Java 8 启动 .js 文件并传递一些库

或使用定义的依赖项

我发现的唯一相关文档(在 Gradle 任务中构建和运行 jar)是第 45 章中的一行。应用程序插件

应用程序插件依赖于 Java,无法为 JavaScript 或 C/C++ CreateStartScriptsString mainClassName定义任务(不是要运行的文件)

来源https://github.com/PaulVI/NashornSandbox

0 投票
3 回答
2761 浏览

security - 如何在 SecurityManager 下运行 Java 8 的 nashorn

我正在寻找沙盒 Java 8 的 Nashorn javascript 引擎。我已经发现了 --no-java 标志,这很有帮助,但我还发现以下链接说需要“在启用 SecurityManager 的情况下运行”: http: //mail.openjdk.java.net/ pipermail/nashorn-dev/2013-September/002010.html

我还没有找到说明如何使用 Nashorn 完成此操作的文档,那么应该如何安全地完成此操作?

0 投票
1 回答
1211 浏览

java - 仅使用 JavaScript (Nashorn) 进行 JavaFX 开发

既然 Nashorn 在 Java 8 中可用,有没有办法只用 JavaScript 文件编写 JavaFX 应用程序?我在哪里可以找到更多信息或视频?你会如何编译它?

或者是否需要最少的引导文件集?

0 投票
1 回答
277 浏览

java - 如何在 Scala 中将类放入 JJS ScriptEngine 的范围

在 scala 中运行时,我无法Class进入范围。ScriptEnginenashorn

这是我尝试做的事情:

有谁知道如何MyClass启动JavaScript

我得到以下异常: