Проблема Jruby Gems-in-a-jar

Я пытаюсь написать некоторый код в рубине (использующий jruby), чтобы быть скомпилированным в байт-код Java с jrubyc и развернутым на удаленной машине, куда это будет выполнено на JVM (никакой рубин, доступный туда).

Все хорошо работает, пока я рад продолжить работать со стандартом jruby библиотеку. Как объяснено на jruby веб-сайте, я просто копирую jruby-complete.jar библиотеку в удаленную машину и включаю его в путь к классу во времени выполнения. Я запускаю свой скомпилированный сценарий, и он работает:круто!

Проблемы запускаются, когда мне нужны некоторые другие библиотеки (обычно rubygems) для запущения моего скрипта.
Я знаю об интересном материале как rawr, - который я успешно протестировал - для соединения всего, в чем Вы нуждаетесь в единственном пакете. Однако это не решение, которое я ищу: у Меня будет много маленьких сценариев для выполнения независимо, и я не хочу, чтобы каждый из них вырос по крайней мере до 10 МБ просто, потому что я безумно включаю jruby-complete.jar в каждого из них.

То, что я хотел бы, должно скомпилировать .jar для каждой из библиотек, что я должен буду использовать, поместить всех их в общую папку на удаленной машине и включать их во время выполнения в пути к классу, когда я запущу свои скомпилированные jruby скрипты на JVM.
С учетом вышесказанного, я пытался следовать инструкциям здесь: http://blog.nicksieger.com/articles/2009/01/10/jruby-1-1-6-gems-in-a-jar
Я попробовал точно пример, показанный там с "хроническим" драгоценным камнем. Движение шаг за шагом:

  1. Установите драгоценный камень локально: Java - банка jruby-complete-1.1.6.jar-S установка драгоценного камня-i./хронические хронических - нет - нори
  2. Упакуйте его в банку: банка cf chronic.jar-C хронический.
  3. Запишите два сценария тестирования строк, сохранив его как testt.rb:

    потребуйте 'хронический'
    Chronic.parse ('завтра')

  4. Скомпилируйте с: jrubyc testt.rb

  5. Выполните получающийся класс Java testt.class со следующим (имеющий и jruby-complete.jar и chronic.jar в той же папке как класс Java): Java - CP.:/jruby-complete.jar:./chronic.jar testt

Я получаю следующую ошибку:

Исключение в потоке "основной" file:/Users/ave2/NetBeansProjects/jrubywatir/lib/jruby-complete.jar!/METAINF/jruby.home/lib/ruby/site_ruby/shared/builtin/core_ext/symbol.rb:1:in 'const_missing': неинициализированная константа, Хроническая (NameError)
от testt.rb:2
... внутренняя стопка jruby игнорируется...
от Модуля const_missing (testt.rb:2)
от (неизвестного). (неизвестный) (:1)

Я действительно не понимаю то, что я делаю неправильно, и я полностью застреваю на этом. Я - новичок в Ruby, намного более привыкшем к Python: не упускайте шанс преобразовать неверного!:-) Спасибо.

9
задан Tom Anderson 23 March 2012 в 19:02
поделиться

2 ответа

Поместите это в начало вашего тестового скрипта:

require 'rubygems'

1
ответ дан 5 December 2019 в 01:42
поделиться

Насколько я могу судить, похоже, что вы не делаете ничего плохого и, вероятно, попали в ошибка. Можете ли вы попробовать свой пример с более поздним выпуском ( http://jruby.org/download ), и если вы все еще видите проблему, создайте ошибку на http: //bugs.jruby. org / ? Спасибо.

2
ответ дан 5 December 2019 в 01:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: