2010-02-15 26 views
23

Necesito compilar mi aplicación JRuby en un archivo JAR independiente. ¿Cómo puedo hacer esto?Crear un archivo JRuby JAR desplegable

+0

Esta pregunta puede ser de ayuda: http://stackoverflow.com/questions/1921475/compile-jruby-hello-world-problem – atomicules

+0

Esa pregunta tiene que ver con compilar y ejecutar el guión (J) Ruby solo y no con Jar embalaje (implementación). –

Respuesta

1

Para basta con ejecutar una secuencia de comandos:

El sitio de JRuby tiene un archivo JAR ejecutable que se puede obtener en el JRuby download page. Desea que el JRuby complete el archivo JAR. A continuación, puede ejecutar la aplicación haciendo

java -jar jruby-complete-1.4.0.jar <script> 

creo que también se puede construir el mismo archivo JAR de la fuente. En la fuente descargada hacer

ant --projecthelp 

Para incrustar una secuencia de comandos de Ruby por completo en un archivo JAR: Embedding JRuby in Java es un buen punto de partida. Probablemente quiera descomprimir el archivo jruby-complete.jar, agregar su clase principal Java que tenga una llamada a un script JRuby o tenga el código Ruby incrustado en él, reemplace la clase principal del manifiesto para apuntar a su nuevo punto de entrada, y jarlo apoyo.

4

Echa un vistazo rawr. Es una gema que empaqueta su aplicación en un archivo JAR.

Si desea compilar para la protección del código fuente debe producir un archivo .class para cada secuencia de comandos en su proyecto (como se describe here) y luego sustituir el contenido del guión original con

require 'the_corresponding_class_file' 

para cada uno de los scripts compilados.

2

JRuby 1.6 ha mejorado esto. Ahora hay una sección de la wiki - StandaloneJarsAndClasses - que habla sobre cómo usar jrubyc para generar archivos .class y frascos independientes.

Con el nuevo compilador, puede generar archivos .class como en este ejemplo de la 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 {}; 
} 

Y se puede establecer el punto de entrada para un tarro de org.jruby.JarBootstrapMain y añadir un frasco-bootstrap archivo .rb.

22

Warbler 1.3.0 o posterior también se puede utilizar para crear un archivo JAR ejecutable.

Instrucciones rápidas. Asegúrese de que está utilizando JRuby`s joya, etc. aquí:

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

puts "Hello World" 

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

Ahora debería tener un archivo myapp.jar en el directorio actual. De acuerdo con el README, solo agrega las bibliotecas que necesites en el directorio lib y utiliza uno (o ambos) un .gemspec o Gemfile para controlar cualquier otra gema que deba colocarse en el archivo .jar.

Cuestiones relacionadas