ScriptException将json转换为映射Java 8 Nashorn

时间:2015-10-28 04:00:04

标签: java nashorn

与最近的Java更新8u60一样,java已经支持json使用Nashorn脚本引擎映射转换,我一直在尝试使用提供的示例代码here来结帐。但是,它给我ScriptException下面的堆栈跟踪。我使用Java 8u65来运行给定的代码。

堆栈跟踪:

  

线程中的异常" main" javax.script.ScriptException:TypeError:   无法在第1行调用undefined   jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:455)     在   jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:439)     在   jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:401)     在   jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:397)     在   jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:152)     在   javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)     在JSONTest.main(JSONTest.java:8)引起:: 1 TypeError:   不能调用undefined at   jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)at at   jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:213)

2 个答案:

答案 0 :(得分:0)

请检查您的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)

我使用JDK 8u60和8u65从Nashorn wiki页面编译并运行JSONTest.java。它按预期工作:

$ java JSONTest
343
2
4
5

我在Windows 7上测试过64位版本的Cygwin shell(但这不会产生任何行为上的差异)

答案 1 :(得分:-1)

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