rjb: вызов методов java из Ruby со скомпилированными файлами в нескольких каталогах - PullRequest
0 голосов
/ 08 июня 2011

У меня есть библиотека Java, скомпилированная в двух каталогах:

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

Моя цель - вызвать несколько простых java-методов com.foo.bar.app.test (с зависимостями в каталоге A) с использованием гема rjb.

В примерах они приводятся ниже:

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

Как я могу использовать rjb для вызова метода methodFromCreate() из класса com.foo.bar.app.test.create

Ответы [ 2 ]

3 голосов
/ 28 октября 2011

Вы можете использовать что-то вроде:

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, ....

0 голосов
/ 10 июня 2011

Я не знаю о геме rjb, но JRuby делает это довольно легко

Внутри вашего кода ruby ​​вам требуется java и добавление пути к вашей иерархии классов в classpath.Если вы импортируете класс, вы можете создать экземпляр, вызвав 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
...