与最近的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)
答案 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文件位于类路径中