如何实际运行Rhino?

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,Rhino将这些调用转换为Java。Java本身将返回填充了一些数据的变量。
@Peter:为什么要使用http调用?我的javascript和java都在同一台服务器上。无论如何,你所说的并不需要Rhino,对吧?我会创建一堆.class文件,然后调用'java myfile.class -v "firstvar" -x "secondvar"'……我是否理解正确?

在Java环境下正常执行JavaScript(如上例所示)之前,您需要使用Java Scripting API在Java应用程序中“加载”Rhino引擎。 - eee
你只能运行 .class 文件而不能运行 .java 文件,因为它不是一种脚本语言。如果你想在服务器上运行一个方法,你需要向服务器发送一个请求。一定有一个 JavaScript 库可以比你自己进行 http 调用更容易地实现这一点,但我不知道它是什么。 - Peter Lawrey
1
如果JavaScript脚本中引用了Java,那么在没有Rhino作为脚本引擎的情况下是无法运行的。你需要采取以下措施之一:(1)使用Rhino编译器编译JavaScript脚本,生成可通过java.exe执行的Java .class文件;或者(2)通过Rhino shell解释器运行脚本;或者(3)在Java应用程序中使用Java脚本支持加载Rhino引擎,并对脚本执行eval() - eee
@eee @Peter:我会编辑我的问题,因为在评论框里空间太小了。 - Blub
1
阅读您编辑过的帖子后:是的,情况确实如此。如果您尝试使用Java的Python引擎Jython,情况也是一样的。 - eee
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上,但除非您准备参与其中,否则不要等待那个时候。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接