java - 我如何实际运行 Rhino?

标签 java javascript rhino liveconnect

我已阅读此处的文档: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,所以我假设 V8 和 Rhino 不能同时使用单个 javascript 文件......我希望我可以调用 java 方法,这将启动 Rhino 来翻译这些调用到 java 。 然后 Java 本身将返回带有一些数据的变量。

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

最佳答案

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

I want to call serverside java methods in my serverside nodejs javascript.

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

关于java - 我如何实际运行 Rhino?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5716577/

相关文章:

javascript - React-intl 不改变占位符值

javascript - 雅虎-OAuth2-SocialAPI : Not returning "Access-Control-Allow-Origin" in initial response

javascript - 如何从 child 调用父函数 - react-native

java - 我如何在 Java 中指定我自己的 Rhino 上下文?

java - Rhino 中通过 HttpClient 的 XMLHttpRequest

java - 使用 Rhino 更改 javascript 字符串文字

java - 同时合并列表 - CopyOnWriteArrayList 或 ConcurrentLinkedQueue 哪个更好?

java - 如何向 Undertow 的 ClientRequest 添加 cookie?

java - 如何将一对一的基本元素加入到实体中?

java - 使用 SeekBar 的进度变化覆盖 WebView