2010-02-15 14 views
23

Muszę skompilować moją aplikację JRuby do samodzielnego pliku JAR. Jak mogę to zrobić?Tworzenie pliku JAR do rozmieszczania JRuby?

+0

To pytanie może pomóc: http://stackoverflow.com/questions/1921475/compile-jruby-hello-world-problem – atomicules

+0

To pytanie dotyczy tylko kompilowania i wykonywania skryptu (J) Ruby, a nie Jar pakowanie (wdrażanie). –

Odpowiedz

1

po prostu uruchomić skrypt:

Witryna JRuby ma runnable pliku JAR, które można uzyskać na JRuby download page. Chcesz JRuby kompletny plik JAR. Następnie można uruchomić aplikację, wykonując

Wierzę, że można również zbudować ten sam plik JAR ze źródła. W pobranej źródła zrobić

ant --projecthelp 

Aby umieścić skrypt Ruby całkowicie do pliku JAR: Embedding JRuby in Java jest dobrym punktem wyjścia. Prawdopodobnie chcesz uchylić plik jruby-complete.jar, dodać klasę główną Java, która ma objaśnienie do skryptu JRuby lub ma osadzony w niej kod Ruby, zastąp klasę główną manifestu, aby wskazać nowy punkt wejścia i słoić go utworzyć kopię zapasową.

4

Zapoznaj się z rawr. To klejnot, który pakuje twoją aplikację do pliku JAR.

Jeśli chcesz skompilować do ochrony kodu źródłowego należy stworzyć plik .class dla każdego skryptu w projekcie (jak opisano here), a następnie zastąpić zawartość oryginalnego skryptu z

require 'the_corresponding_class_file' 

dla każdego skompilowane skrypty.

2

JRuby 1.6 poprawiło to. Jest teraz sekcja wiki - StandaloneJarsAndClasses - która mówi o tym, jak używać jrubyca do generowania plików .class i samodzielnych słoików.

Z nowego kompilatora, można zbudować pliki .class jak ten przykład z wiki:

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

I można ustawić punktu wejścia do słoika do org.jruby.JarBootstrapMain i dodać Jar-bootstrap plik .rb.

22

Warbler Do wykonania wykonywanego pliku JAR można również użyć wersji 1.3.0 lub nowszej.

Szybkie instrukcje. Upewnij się, że używasz JRuby`s gem itd tutaj:

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

puts "Hello World" 

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

powinien teraz mieć plik w katalogu bieżącym myapp.jar. Zgodnie z README po prostu dodajesz potrzebne biblioteki w katalogu lib i używasz (lub obydwu) jednego .gemspec lub Gemfile do kontrolowania innych klejnotów, które trzeba umieścić w pliku .jar.

Powiązane problemy