23

JRuby アプリケーションをスタンドアロンの JAR ファイルにコンパイルする必要があります。これどうやってするの?

4

4 に答える 4

24

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

于 2011-04-22T19:00:22.003 に答える
6

rawrをチェックしてください。アプリケーションを JAR ファイルにパッケージ化する gem です。

ソース コード保護のためにコンパイルする場合.classは、プロジェクト内のスクリプトごとにファイルを作成し (ここで説明されているように)、元のスクリプトの内容を次のように置き換える必要があります。

require 'the_corresponding_class_file'

コンパイルされたスクリプトごとに。

于 2010-03-03T14:09:44.580 に答える
2

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 ファイルを追加できます。

于 2011-04-04T04:11:34.157 に答える
1

スクリプトを実行するには:

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 に戻します。上。

于 2010-02-15T21:57:35.890 に答える