2010-02-15 12 views
23

Ich muss meine JRuby-Anwendung in eine eigenständige JAR-Datei kompilieren. Wie kann ich das machen?Erstellbare JRuby JAR-Datei erstellen?

+0

Diese Frage könnte helfen: http://stackoverflow.com/questions/1921475/compile-jruby-hello-world-problem – atomicules

+0

Diese Frage hat mit der Kompilierung und Ausführung der (J) Ruby-Skript nur und nicht mit Jar zu tun packen (bereitstellen). –

Antwort

1

So führen Sie nur ein Skript:

Die JRuby Seite hat eine runnable JAR-Datei, die Sie am JRuby download page zu bekommen. Sie möchten die vollständige JAR-Datei von JRuby. Sie können dann Ihre Anwendung ausführen,

Ich glaube, Sie können auch die gleiche JAR-Datei aus der Quelle erstellen. In der heruntergeladenen Quelle tut

ant --projecthelp 

Um einen Ruby-Skript vollständig in eine JAR-Datei einbetten: Embedding JRuby in Java ist ein guter Ausgangspunkt. Wahrscheinlich möchten Sie die jruby-complete.jar Datei aufheben, Ihre Java-Hauptklasse hinzufügen, die entweder ein Callout zu einem JRuby-Skript hat oder den Ruby-Code darin eingebettet hat, die Hauptklasse des Manifests auf Ihren neuen Einstiegspunkt setzen und jar sichern.

4

Auschecken rawr. Es ist ein Juwel, das Ihre Anwendung in einer JAR-Datei verpackt.

Wenn Sie möchten, für Quellcode-Schutz kompilieren Sie eine .class-Datei für jedes Skript in Ihrem Projekt produzieren müssen (wie here beschrieben) und dann den Inhalt des Original-Skript ersetzen mit

require 'the_corresponding_class_file' 

für jeden die kompilierten Skripte.

2

JRuby 1.6 hat dies verbessert. Es gibt jetzt einen Abschnitt des Wikis - StandaloneJarsAndClasses - der darüber spricht, wie man jrubyc benutzt, um .class-Dateien und Standalone-Jars zu erzeugen.

Mit dem neuen Compiler, Sie Dateien wie in diesem Beispiel aus dem Wiki bauen .class- können:

 
[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 {}; 
} 

Und Sie den Einstiegspunkt für ein Glas zu org.jruby.JarBootstrapMain setzen und ein Glas-Bootstrap hinzufügen .rb-Datei.

22

Warbler 1.3.0 oder neuer kann auch verwendet werden, um eine ausführbare JAR-Datei zu erstellen.

Kurzanleitung. Stellen Sie sicher, dass Sie JRuby`s Juwel verwenden, usw. hier:

$ gem install warbler 
$ mkdir bin 
$ cat <<EOF > bin/myapp 
#!/usr/bin/env jruby 

puts "Hello World" 

EOF 
$ chmod a+x bin/myapp 
$ warble jar 

Sie jetzt eine myapp.jar Datei im aktuellen Verzeichnis haben sollte. Entsprechend der README fügen Sie einfach irgendwelche Bibliotheken hinzu, die Sie im Verzeichnis lib benötigen, und verwenden Sie entweder (oder beide) .gemspec oder Gemfile, um irgendwelche anderen Edelsteine ​​zu steuern, die in die .jar Akte gebracht werden müssen.