你能从java调用编译的JRuby类吗?

时间:2010-05-04 22:31:07

标签: java ruby jruby compilation

所以我提出了在JRuby中编写一些代码然后通过Java访问所有类的一般想法。我不知道这是否可能,但无论如何我想问。让我们说 有一些JRuby代码:

class adder
   def addme
      return 22
   end
end

如果我使用jrubyc编译它,那么我可以在java中做任何类似的事情:

import adder;
class anything {
    void testMethod() 
    {
       adder a = new adder();
       int x = a.addme();
    }
 }

现在看了之后,有点让我觉得Java不知道什么样的项目测试addme会返回,这可能不起作用。我不知道,但无论如何我想把它扔出去。

由于

3 个答案:

答案 0 :(得分:8)

在JRuby 1.5中实际上有一种新方法可以做到这一点!你的问题非常及时。这是一个示例会话:

http://gist.github.com/390342

我们希望很快就会有一篇博文详细介绍这一新功能。 JRuby wiki上有一些初步的文档:

http://wiki.jruby.org/GeneratingJavaClasses

答案 1 :(得分:1)

实际上有两种方法可以从java调用ruby代码,第一种方法较慢但是你可以在运行时更改是从这个link调用脚本引擎。但至于你是如何做到的,jrubyc将ruby编译为javaBytecode,这意味着java会将其视为java代码

jrubyc adder.rb --java  将文件“adder.rb”编译为“Adder.class”类

和你一样......

所以你可以像任何其他java类一样调用它

import org.jruby.RubyObject

Adder ad = new Adder();

RubyObject ro = ad.addme();

resource

答案 2 :(得分:0)

使用JRuby中的嵌入包是可能的,但我认为这超出了答案的范围。看一下这个: http://kenai.com/projects/jruby/pages/RedBridge