0

我在两个目录中编译了一个 Java 库:

Directory A
   com.foo.bar.app.* //without test
Directory B
   com.foo.bar.app.test.*

我的目标是使用 rjb gem 调用 com.foo.bar.app.test 的一些简单的 java 方法(在目录 A 中有依赖项)。

在示例中,他们使用以下实例:

Rjb::load(classpath = '.', jvmargs=[])

如何使用 rjbmethodFromCreate()从类 com.foo.bar.app.test.create 调用方法?

4

2 回答 2

3

你可以使用类似的东西:

require 'rjb'

RJB_LOAD_PATH = ["Directory A", "Directory B"].join(File::PATH_SEPARATOR)
RJB_OPTIONS = ['-Djava.awt.headless=true','-Xms16m', '-Xmx32m']

Rjb::load RJB_LOAD_PATH, RJB_OPTIONS

my_create_class = Rjb::import('com.foo.bar.app.test.Create')
my_create = my_create_class.new

my_create.methodFromCreate()

我添加了我们目前正在使用的 de RJB_OPTIONS 只是为了举例说明,如果您需要任何 awt 东西删除 dthe -Djava.awt,... 选项。

于 2011-10-28T10:39:12.887 回答
0

我不知道 rjb gem,但是 JRuby 很容易做到这一点

在您的 ruby​​ 代码中,您需要 require java 并将类层次结构的路径添加到类路径中。如果你导入类,你可以通过在类名上调用 new 来创建一个实例。如果您不导入该类,您可以通过在完全限定的类名上调用 new 来创建一个实例。

require 'java'
$CLASSPATH<< "path/to/java/classes";  

import com.foo.bar.app.Class1

c1 = Class1.new
c2 = com.foo.bar.app.test.Class2.new
于 2011-06-09T23:10:59.153 回答