问题标签 [javax.script]

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 投票
1 回答
332 浏览

java - 如何指定确切的 rhino 实现而不是嵌入到 JDK 中的实现?

我在我的应用程序中使用 rhino 脚本。我发现在不同的环境下它的工作方式不同。例如,在 open-jdk 上,此代码不起作用

而在 Oracle 的 JDK 上工作。

这显然是因为每个 JDK 都包含它自己的 Rhino 实现。

我在依赖项中添加了以下内容:

如何指定使用此实现?

更新:我不是直接调用 rhino,而是通过 javax.script API

0 投票
1 回答
763 浏览

java - Java ScriptEngine (nashorn & rhino):如何堆叠作用域/绑定?

我必须使用Rhino1.7R4及其org.mozilla.javascript包移植一个软件,以使用javax.script包及其 ScriptEngine(Java 6 和 7 中的Rhino ,Java 8 中的Nashorn)。

主要问题是堆栈范围(绑定)。使用 Rhino jar,我这样做:

所以

  • 如果一个变量在没有 var 的情况下定义,它是一个全局变量(根范围)
  • 如果一个变量是用 var 定义的,它是一个局部变量(当前范围)
  • 如果变量被访问或修改,引擎在其当前范围内查找,以及父级和祖父级......以及全局范围

这是 JS 标准行为。

如何使用 javax.script API做与setParentScope相同的操作?

0 投票
0 回答
1508 浏览

java - 在 Android 编程中使用 javax.script 的问题

我是 Android 编程新手,我正在尝试为 Android 制作一个计算器,我想使用 javax.script,我添加了 jar 文件库,我可以导入这些:

但是当我宣布这一点时:

我的应用程序无法运行。它显示“您的应用不幸停止了”。请让我知道如何将其用于我的应用程序。先感谢您。

logcat 中的错误是:

0 投票
4 回答
9325 浏览

java - 为什么 getEngineByName(“js”) 返回 null?

无论我尝试什么,getEngineByName()都会返回 null。

这是我的代码:

但是engine在这些行之后为空。

我也试过:

  • getEngineByName("javascript")
  • getEngineByName("nashorn")

他们都回来了null。实际上,manager.getEngineFactories()显示一个空数组 - 意味着根本没有工厂。

这2个答案建议传递null给构造函数,但它对我不起作用:

这个答案说这是一个已修复的错误。


更新:

那是 Eclipse 中的一个Android 应用程序项目

我不知道它与Java Project有什么不同。

现在我刚刚打开了一个新的Java Project,写了这些行,我得到了一些结果:

engine不为

此外,javax.script.*已成功导入,就好像它已经存在(内置)一样。这是因为我使用的是 Java 8 吗?

在之前的(android)项目中,我使用的是从这里下载的javax.script

那么Android项目中的问题是什么,我该如何解决呢?

0 投票
2 回答
330 浏览

javascript - Javascript 中的 Nan 与 JDK8 上的 javax.scriptEngine 的比较

根据 IEEE 754 NaN,与任何数字的相等比较都应该是错误的(Java 和 JavaScript 语言)。但是在下面的代码中,使用 JavaScript 的 javax scriptEngine,一个设置为 NaN 的变量与自身比较返回 true。

输出 :

使用 oracle JDK:

我的理解是'eq'表达式应该返回false。

当 a1 是 NaN 时,为什么 a1 == a1 True 而不是 False ?

0 投票
1 回答
1135 浏览

javascript - 使用 Java(桌面)从网站保存 SVG 图像

我正在使用此代码 ( test.html ) 使用JDenticon生成一个网站:

我想让 Java 桌面应用程序可以访问此代码中生成的图像,并希望将其保存在我的 PC 上。这可能吗,也许还可以更改hascode(ff8adece0631821959f443c9d956fc39

它的代码是什么?

编辑#1:

我在 JDenticon 的 API 中发现了一些看起来像这样并用于 .NET Framework 的东西:

我想在 Java 中做这样的事情并找到了Java ScriptEngine (Tutorials: Oracle )。但我不知道如何使用它,现在我的代码如下所示:

这显然行不通,因为它没有调用 jdenticon.js 文件中的jdenticon.toSvg(hash, size)方法。因此,如果有人对如何解决这个问题有一个想法,那就太好了。

0 投票
1 回答
122 浏览

java - JSR-223 上下文中编译脚本的性质是什么

我找不到任何明确的答案。脚本是否翻译为 ByteCode ?到特定于脚本的伪代码?

当我使用已编译的 nashorn 脚本时,它只是因为 JIT 编译器在脚本的 java 翻译上完成了它的工作而被编译,还是因为已经为 nashorn 类型的解释 VM(一种 smallTalk 选项)准备了特定的脚本解析版本) ? 谢谢你的帮助

0 投票
1 回答
696 浏览

java - 如何写入 Nashorn 错误流?

我使用来自 Java 应用程序的 Nashorn 脚本。Java设置上下文(包括errorWriter)并且一切正常......但是我还没有找到从nashorn脚本写入错误流的方法。有人知道吗 ?

我试图抛出一个错误,但它在 scriptException 中输出,而不是在错误输出 Stream 中。

感谢您的任何想法。

0 投票
1 回答
1667 浏览

java - 在java中将包含逻辑操作的字符串评估为布尔值

我正在尝试评估"in1 && in2"布尔值作为测试,但我希望能够评估所有布尔值作为我实际项目的刺痛。in1 和 in2 是具有布尔状态的节点的名称,我得到这样的实际表达式,

logic 是与我要评估的逻辑联系的字符串,curname 是当前节点名称,被替换为其布尔值(例如“in1”)它在循环中,因此在评估字符串之前替换所有节点名称,节点是数组列表节点数,ins 是节点数组中输入节点的索引,getState()返回节点布尔值这工作正常,将逻辑字符串的新值设置为“true && true”。

困难的部分是将字符串评估为布尔值。我发现我可以在这里使用 javax.script 来帮助我。所以我就这样实现了

问题是它每次都评估为假,当我尝试将 eval 返回的对象转换为布尔值并尝试像这样显示它时,

它只返回假。

oracle 的 eval 页面上,我看到还有一些其他参数可以传递给 eval,我是缺少其中一个还是完全不同?

*旁注,这在我未在此处显示的任何代码中都不是问题,我已经使用原始布尔值而不是字符串测试了评估。

0 投票
5 回答
10869 浏览

android - 如何在 Android 中使用 ScriptEngineManager?

它有什么问题?执行此操作时应用程序正在退出。它没有显示任何错误,但应用程序正在关闭