当前位置: 首页 > 知识库问答 >
问题:

ScriptException将json转换为映射Java 8 Nashorn

凌轶
2023-03-14

正如最近的Java更新8u60一样,Java支持使用Nashorn脚本引擎将json映射到对话中,我一直在尝试使用这里提供的示例代码来验证这一点。然而,它给了我ScriptException和下面的stacktrace。我正在使用Java8U65来运行给定的代码。

堆栈跟踪:

线程“main”javax中出现异常。剧本ScriptException:TypeError:无法在jdk的第1行调用undefined in。纳肖恩。应用程序编程接口。脚本编写。纳什启动了引擎。jdk上的throwAsScriptException(NashornScriptEngine.java:455)。纳肖恩。应用程序编程接口。脚本编写。纳什启动了引擎。jdk的evalImpl(NashornScriptEngine.java:439)。纳肖恩。应用程序编程接口。脚本编写。纳什启动了引擎。jdk的evalImpl(NashornScriptEngine.java:401)。纳肖恩。应用程序编程接口。html" target="_blank">脚本编写。纳什启动了引擎。jdk的evalImpl(NashornScriptEngine.java:397)。纳肖恩。应用程序编程接口。脚本编写。纳什启动了引擎。eval(NashornScriptEngine.java:152)在javax上。剧本抽象脚本引擎。JSONTest上的eval(AbstractScriptEngine.java:264)。main(JSONTest.java:8)由::1 TypeError引起:无法在jdk调用undefined。纳肖恩。内部的运行时。埃克马尔。jdk出现错误(ECMAErrors.java:57)。纳肖恩。内部的运行时。埃克马尔。typeError(ECMAErrors.java:213)

共有2个答案

充子航
2023-03-14

确保包含jdk的jar文件在类路径中

印曜灿
2023-03-14

你能检查一下你的JDK版本吗?它应该打印如下内容:

$ java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

编译并运行了JSONTest。来自Nashorn wiki页面的java,包含JDK 8u60和8u65。正如预期的那样:

$ java JSONTest
343
2
4
5

我使用Cygwin shell在64位版本的Windows7上进行了测试(但这不会产生任何行为上的差异)

 类似资料:
  • 我一直在研究Jackson,但似乎必须将映射转换为JSON,然后将生成的JSON转换为POJO。 有没有一种方法可以将地图直接转换成POJO?

  • 很抱歉重复了这个问题,但我的问题是其他的。我有一个从json-string解析到map的JSON解析器方法。但是json-string有一个值,这个值也是json-string。大概是这样的: 因此,我的解析方法: 我在客户端得到响应: ?但是随后我得到一个错误,IDE告诉我,是一个字符串。 那么,我如何用我的UserData获得这个LinkedHashMap呢?对不起,为了我的英语。谢谢你。

  • 我试图在Go中创建一个泛型方法,该方法将使用来自< code > map[string]interface { } 的数据填充< code>struct。例如,方法签名和用法可能如下所示: 我知道使用JSON作为中介可以做到这一点;有没有其他更有效的方法?

  • 本文向大家介绍Java 将Map映射转换为 List,包括了Java 将Map映射转换为 List的使用技巧和注意事项,需要的朋友参考一下 首先,让我们创建一个Java Map并初始化- 现在,将Map转换为List- 示例 以下是在Java中将Maps转换为List的程序- 输出结果