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のいずれか (または両方) を使用するだけです。.gemspecGemfile.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 に戻します。上。