Создать развертываемый 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, замените основной класс манифеста, чтобы он указывал на вашу новую точку входа, и выполните резервное копирование.

Другие вопросы по тегам