我有一个在两个目录中编译的Java库:
Directory A
com.foo.bar.app.* //without test
Directory B
com.foo.bar.app.test.*
我的目标是使用rjb gem调用com.foo.bar.app.test(在目录A中具有依赖项)的一些简单java方法。
在示例中,他们以此为例:
Rjb::load(classpath = '.', jvmargs=[])
如何使用rjb从类com.foo.bar.app.test.create调用方法methodFromCreate()
?
答案 0 :(得分: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,...选项。
答案 1 :(得分:0)
我不知道rjb gem,但JRuby很容易做到这一点
在ruby代码中,您需要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