Может ли приложение Ruby вызывать код Java? - PullRequest
4 голосов
/ 12 апреля 2011

Это, вероятно, действительно просто, но все мои результаты в Google вернулись с JRuby, что я не хочу знать.Мне любопытно, можно ли как-нибудь сделать обычное приложение Ruby (например, приложение Rails или приложение Sinatra) для ссылки и вызова библиотеки Java, которая находится в classpath?В идеале тот, который работает на Heroku.

Ответы [ 4 ]

5 голосов
/ 12 апреля 2011

Не напрямую.Библиотеки Java работают в JVM, приложения Ruby в своей собственной виртуальной машине.Если вы хотите, чтобы эти двое общались, вам нужно создать какой-то канал связи между ними (есть различные решения, см. Например http://code.google.com/p/activemessaging/).

3 голосов
/ 07 мая 2013

Мне удалось вызвать мою Java-программу следующим образом из контроллера Rails:

system "java -cp postgresql-9.0-801.jdbc4.jar:./ Main"

Несколько вещей на заметку:

  • Я скомпилировал свой основной класс и поместил его в корень моего приложения rails (и перенес его в heroku).
  • Этот вызов блокирует приложение rails, пока java-программа не завершит выполнение
  • Вероятно, это будет лучше работать с delayed_job gem (я сейчас над этим работаю)
1 голос
/ 12 апреля 2011
  1. http://rjb.rubyforge.org/
  2. другой вариант будет, если jar исполняемый и делает что-то вроде выполнить системную команду и запустить ее в сеансе / терминале
0 голосов
/ 17 января 2014

Вы можете выполнить блок команд inline файла ruby ​​(jruby):

importString = <<-eos
  java -version
  ls -l
eos

exec importString

Это нормально для Mac, но Windows jruby имеет некоторые ограничения.

...