Я пытаюсь написать некоторый код в рубине (использующий 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
Я попробовал точно пример, показанный там с "хроническим" драгоценным камнем. Движение шаг за шагом:
Запишите два сценария тестирования строк, сохранив его как testt.rb:
потребуйте 'хронический'
Chronic.parse ('завтра')
Скомпилируйте с: jrubyc testt.rb
Я получаю следующую ошибку:
Исключение в потоке "основной" 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: не упускайте шанс преобразовать неверного!:-) Спасибо.
Поместите это в начало вашего тестового скрипта:
require 'rubygems'
Насколько я могу судить, похоже, что вы не делаете ничего плохого и, вероятно, попали в ошибка. Можете ли вы попробовать свой пример с более поздним выпуском ( http://jruby.org/download ), и если вы все еще видите проблему, создайте ошибку на http: //bugs.jruby. org / ? Спасибо.