JRuby アプリケーションをスタンドアロンの JAR ファイルにコンパイルする必要があります。これどうやってするの?
4 に答える
Warbler 1.3.0 以降を使用して、実行可能な JAR ファイルを作成することもできます。
クイック指示。ここで JRuby の gem などを使用していることを確認してください。
$ 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
JRuby 1.6 ではこれが改善されました。wiki にStandaloneJarsAndClassesというセクションがあり、 jrubyc を使用して .class ファイルとスタンドアロン jar を生成する方法について説明しています。
新しいコンパイラを使用すると、wiki の次の例のように .class ファイルを作成できます。
james@gealach:/tmp/fnx$ cat my_foo.rb クラスフー デフバー(a, b) 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」からコンパイル 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); 静的 {}; }
また、jar のエントリポイントを org.jruby.JarBootstrapMain に設定し、jar-bootstrap.rb ファイルを追加できます。
スクリプトを実行するには:
JRuby サイトには、JRuby ダウンロード ページで入手できる実行可能な JAR ファイルがあります。JRuby の完全な JAR ファイルが必要です。その後、次のようにしてアプリケーションを実行できます
java -jar jruby-complete-1.4.0.jar <script>
ソースから同じ JAR ファイルをビルドすることもできると思います。ダウンロードしたソースで
ant --projecthelp
Ruby スクリプトを JAR ファイルに完全に埋め込むには: JRuby を Java に埋め込むことは、出発点として適しています。おそらく、ファイルを unjarjruby-complete.jar
し、JRuby スクリプトへのコールアウトまたは Ruby コードが埋め込まれた Java メイン クラスを追加し、マニフェストのメイン クラスを新しいエントリ ポイントを指すように置き換えて、jar に戻します。上。