Подтвердить что ты не робот

Создать развернутый JAR файл JRuby?

Мне нужно скомпилировать приложение JRuby в отдельный JAR файл. Как я могу это сделать?

4b9b3361

Ответ 1

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, и используйте (или оба) a .gemspec или Gemfile для управления любыми другими камнями, которые необходимо поместить в файл .jar.

Ответ 2

Проверьте rawr. Это драгоценный камень, который упаковывает ваше приложение в файл JAR.

Если вы хотите скомпилировать для защиты исходного кода, вы должны создать файл .class для каждого script в вашем проекте (как описано здесь), а затем замените содержимое оригинала script на

require 'the_corresponding_class_file'

для каждого из скомпилированных скриптов.

Ответ 3

JRuby 1.6 улучшил это. Теперь в разделе wiki - StandaloneJarsAndClasses - говорится о том, как использовать jrubyc для генерации файлов .class и отдельных баннеров.

С новым компилятором вы можете создавать файлы .class, как этот пример, из вики:

[email protected]:/tmp/fnx$ cat my_foo.rb 
class Foo
   def bar(a, b)
     puts a + b
   end
 end
[email protected]:/tmp/fnx$ ~/jruby/bin/jrubyc --javac my_foo.rb 
Generating Java class Foo to 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
[email protected]:/tmp/fnx$ ls
Foo.class  Foo.java  my_foo.rb
[email protected]:/tmp/fnx$ javap.exe Foo
Compiled from "Foo.java"
public class 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.

Ответ 4

Чтобы запустить script:

На сайте JRuby есть исполняемый JAR файл, который вы можете найти на странице страница загрузки JRuby. Вы хотите получить JAR файл JRuby. Затем вы можете запустить приложение, выполнив

java -jar jruby-complete-1.4.0.jar <script>

Я считаю, что вы также можете создать тот же JAR файл из источника. В загруженном источнике сделайте

ant --projecthelp

Чтобы полностью внедрить Ruby script в JAR файл: Встраивание JRuby в Java является хорошей отправной точкой. Вероятно, вы захотите развязать файл jruby-complete.jar, добавьте свой основной класс Java, который либо имеет выноску в JRuby script, либо имеет встроенный в него код Ruby, замените основной класс манифеста, чтобы указать на новую точку входа, и запустите его обратно.