【发布时间】:2017-08-21 19:29:05
【问题描述】:
除非我在这里遗漏了什么,否则这个版本的 Nashorn 似乎有一些错误:
$ jjs -v
nashorn 1.8.0_45
使用 3 位或更多位的多个积分作为属性键令人窒息:
$ echo 'var c = JSON.parse("{\"123\": \"a\", \"456\": \"b\"}"); print(c["123"])' | jjs; echo
jjs> java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 7
2 位数工作正常:
$ echo 'var c = JSON.parse("{\"12\": \"a\", \"45\": \"b\"}"); print(c["12"])' | jjs; echo
jjs> a
3 位和 2 位给出不同的错误:
$ echo 'var c = JSON.parse("{\"123\": \"a\", \"45\": \"b\"}"); print(c["123"])' | jjs; echo
jjs> undefined
一个 3 位数字和一个字符串可以正常工作:
$ echo 'var c = JSON.parse("{\"123\": \"a\", \"foo\": \"b\"}"); print(c["123"])' | jjs; echo
jjs> a
使用这个版本一切正常:
$ jjs -v
nashorn 1.8.0_121
$ echo 'var c = JSON.parse("{\"123\": \"a\", \"456\": \"b\"}"); print(c["123"])' | jjs; echo
jjs> a
无论如何,上面的 sn-ps 只是演示我在 webapp 中遇到的问题的一种方式。我的问题是 - 有没有办法将这个较新版本的 nashorn 捆绑到我的 web 应用程序中,这样我就不需要在服务器上请求 java 升级?
【问题讨论】:
-
没有。但是您可以添加一个发布说明,说明 需要 Java JDK 1.8.0 Build 121 或更高版本。
-
您是否询问在您的应用程序中重新分发 Java 版本的法律要求?或者关于将嵌入式 Java Nashorn 运行时与您的应用程序捆绑并将其用于某些操作的技术要求?还是两者兼而有之?
-
后者 - 我想知道是否可以在不升级 java 版本的情况下让用户使用更新版本的 nashorn?