【问题标题】:Call Ruby class over java with jruby使用 jruby 通过 java 调用 Ruby 类
【发布时间】:2010-04-25 10:56:20
【问题描述】:

如果我在 ruby​​ 中实现一个类并用 jrubyc 编译它,那么如果我用 java 启动它就不可能直接从 java 类中调用它。如果我看对了,我必须使用org.jruby.embed... 来实现一个包装器,它采用一个类名和一个方法来调用我的 ruby​​ 类。

如果我使用 jruby 启动应用程序,我是否也必须这样做?在我当前的项目中,我完全使用 jruby 启动 java 工作流引擎。工作流必须调用它无法找到的 ruby​​ 类中的方法。

也许更容易理解:

      [ruby_class]   <-----has to call----.
                                          |
jruby [ruby_start_script] --starts--> [java wfe]

【问题讨论】:

  • 你使用的是什么版本的 JRuby?

标签: java ruby jruby


【解决方案1】:

我不知道我是否理解,但要要求您的代码,您只需要求它并确保它在您的 JAVA PATH 或 APP PATH 中。例如,在您的 jruby 脚本中,您可以这样做:

require 'java'
java_import java.lang.System
version = System.getProperties["java.runtime.version"]

您也可以调用 java 方法,例如:

 java.lang.System.currentTimeMillis

我会说你让你的类使用 java 应用程序,然后你应该把它放在你的应用程序路径中,做一个 require 'java' 和 java_import your.class.here

【讨论】:

  • 我可以调用 Java 方法,但我无法让 Java 工作流引擎调用我的 ruby​​ 方法。我不确定这是不是一般情况——“你不能在没有 hack 的情况下从 java 调用 jruby。” - 因为我在 jruby 中运行 java 代码。解释起来很复杂……
【解决方案2】:

如果我在 ruby​​ 中实现一个类并且 用 jrubyc 编译它而不是它 可以从java类调用它 如果我用 java 启动它直接。

不确定我是否完全理解这个问题,但如果您问是否可以使用 jrubyc 从 Java 类调用 Jruby 方法,这是可能的。看看这篇博文,它展示了如何调用JRuby method from Java

【讨论】:

    【解决方案3】:

    IIRC,这是 JRuby 的最新集成之一,可能会发生变化。正如in this post 所述,这似乎是可能的,尽管警告不是很有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多