Rhino 'document' 未定义

Rhino 'document' is not defined

我正在尝试使用 Rhino 将一些 Java 脚本代码转换为 Java。任何对 JavaScript 有任何经验的人都知道 "document" 用于很多事情。因此,它用于我正在使用的代码中的各种功能。但是,当我执行 Rhino 时,它只会给我这个错误

js: uncaught JavaScript runtime exception: ReferenceError: "document" is not defined.

有人知道是什么原因造成的吗?如果是这样,如何解决?我在 Ubuntu 14.10 64 位上使用 Rhino 1.7 版。

或者如果有人至少可以告诉我如何从 Java 中评估 Java 脚本。我做了一些研究,但代码始终无法正常工作。

Rhino 是一个只定义基础对象的解释器。 'document''window'等对象是外部HTMLDOM对象。它超出了 Rhino 或任何其他 Javascript 解释器(例如 jscript(IE)、V8、spidermonkey 和 nashorn)的范围。

请参考基于 java 的 HtmlUnit,它也使用 Rhino,它定义了大部分 HTML DOM 对象。更新的不错

经过数小时的挖掘和研究,我找到了解决此问题的方法...

我做了两件事

我停止使用 Rhino(考虑到它已经过时)并转而使用 Nashorn


我还找到了如何实现文档

How to append xml nodes (as a string) into an existing XML Element node (only using java builtins)?

找到这个答案的方式非常非常规,这会让任何程序员都去 "Oh...That's one way to do it."

问题中实现的方式确实有效。

免责声明

我的问题没有完全解决。 Nashorn 仍然给我这个错误 Exception in thread "main" java.lang.ClassCastException: Cannot cast java.lang.String to org.w3c.dom.DocumentType 但是,那是另一个问题。