3

我已经阅读了这里的文档:Mozilla's 'Scripting Java'

这些示例也不能回答我的问题:Rhino Liveconnect example

例如,我的 javascript 文件如何知道在哪里可以找到“java.lang”?当然,它可以在 Rhino shell 中运行,但我需要从我的 javascript 文件中运行 java 代码,而不是从 shell 中运行。我只能在下载的源代码中看到 .java 文件。

我想在我的服务器端 nodejs javascript 中调用服务器端 java 方法。是否不需要以某种方式启动 Rhino 来为我的 javascript 提供理解 java 的能力?

编辑: @eee 所以如果我理解正确,Rhino 实际上并没有让我从 javascript 运行 java,它只是将我所有的 javascript 转换为 java .class 文件......毕竟我必须在 java 文件中执行?这违背了从 javascript 调用 java 的目的。整个想法是能够从我的 javascript 代码中调用任何 java 代码,而无需构建新的 java 库。

那不是说我不能用Rhino吗?Nodejs 使用 V8 引擎来执行 javascript,所以我假设一个 javascript 文件不能同时被 V8 和 Rhino 使用......我希望我可以调用 java 方法,这将启动 Rhino 来翻译这些调用到爪哇。然后,Java 本身将返回填充了一些数据的变量。

@Peter:为什么是 http 调用?我的 javascript 和我的 java 现在都位于同一台服务器上。无论如何,你所说的并不完全需要 Rhino,不是吗?我会创建一堆 .class 文件,然后调用'java myfile.class -v“firstvar”-x“secondvar”'..我理解正确吗?

4

1 回答 1

3

Rhino确实让我从 javascript 脚本运行 java。没什么可做的。LiveConnect 让您可以访问 java.* 包中的所有内容。如果您希望自己的代码可以访问,您只需将您的类(编译的 Java 代码)添加到应用程序的类路径中。

我想在我的服务器端 nodejs javascript 中调用服务器端 java 方法。

Rhino 是一个 javascript 解释器,这意味着它运行javascript 代码。V8 是 NodeJS 的 javascript 解释器。您必须选择 Rhino 或 V8。V8 采用 C++ 语言,并深深嵌入 NodeJS 中。Rhino 是 Java 语言,不能轻易替换 V8。有项目(长期)将 NodeJS 移植到 Rhino 上,但除非您准备好参与,否则不要等待。

于 2011-06-17T18:08:33.730 回答