Создать развертываемый JAR-файл JRuby?
Мне нужно скомпилировать мое приложение JRuby в отдельный файл JAR. Как я могу это сделать?
4 ответа
Warbler 1.3.0 или новее также может быть использован для создания исполняемого файла JAR.
Быстрые инструкции. Убедитесь, что вы используете гем JRuby и т. Д. Здесь:
$ gem install warbler
$ mkdir bin
$ cat <<EOF > bin/myapp
#!/usr/bin/env jruby
puts "Hello World"
EOF
$ chmod a+x bin/myapp
$ warble jar
Теперь вы должны иметь myapp.jar
файл в текущем каталоге. Согласно README
Вы просто добавляете любые библиотеки в lib
каталог и использовать либо (или оба) .gemspec
или же Gemfile
контролировать любые другие драгоценные камни, которые должны быть помещены в .jar
файл.
Проверьте rawr. Это драгоценный камень, который упаковывает ваше приложение в файл JAR.
Если вы хотите скомпилировать для защиты исходного кода, вы должны создать .class
файл для каждого сценария в вашем проекте (как описано здесь), а затем замените содержимое исходного сценария на
require 'the_corresponding_class_file'
для каждого из скомпилированных скриптов.
JRuby 1.6 улучшил это. Теперь есть раздел вики - StandaloneJarsAndClasses, в котором рассказывается, как использовать jrubyc для создания файлов.class и автономных jar-файлов.
С новым компилятором вы можете создавать файлы.class, как этот пример из вики:
james @ gealach: / tmp / fnx $ cat my_foo.rb класс фу Def Bar (A, B) ставит + б конец конец james@gealach:/tmp/fnx$ ~/jruby/bin/jrubyc --javac my_foo.rb Генерация Java-класса Foo для C:/cygwin/tmp/fnx/Foo.java javac -d C:/cygwin/tmp/fnx -cp C:/cygwin/home/james/jruby/lib/jruby.jar;. C:/cygwin/tmp/fnx/Foo.java james@gealach:/tmp/fnx$ ls Foo.class Foo.java my_foo.rb james@gealach:/tmp/fnx$ javap.exe Foo Составлено из "Foo.java" открытый класс Foo extends org.jruby.RubyObject{ public static org.jruby.runtime.builtin.IRubyObject __allocate__(org.jruby.Ruby, org.jruby.RubyClass); public Foo(); public java.lang.Object bar(java.lang.Object, java.lang.Object); static {}; }
И вы можете установить точку входа для jar в org.jruby.JarBootstrapMain и добавить файл jar-bootstrap.rb.
Чтобы просто запустить скрипт:
На сайте JRuby есть исполняемый файл JAR, который вы можете получить на странице загрузки JRuby. Вам нужен полный JAR-файл JRuby. Затем вы можете запустить приложение, выполнив
java -jar jruby-complete-1.4.0.jar <script>
Я полагаю, что вы также можете собрать тот же файл JAR из источника. В скачанном источнике делаю
ant --projecthelp
Чтобы полностью встроить скрипт Ruby в файл JAR: Хорошим отправным пунктом является встраивание JRuby в Java. Вы, вероятно, хотите разархивировать jruby-complete.jar
файл, добавьте свой основной класс Java, который либо имеет обратный вызов к скрипту JRuby, либо имеет встроенный код Ruby, замените основной класс манифеста, чтобы он указывал на вашу новую точку входа, и выполните резервное копирование.