2010-05-04 14 views
7

Así que se me ocurrió la idea general de escribir un código en JRuby, luego acceder a todas las clases a través de Java. No tengo idea de si esto es posible, pero quería preguntar de todos modos. Digamos que algo de código JRuby:¿Puedes llamar a las clases JRuby compiladas desde Java?

class adder 
    def addme 
     return 22 
    end 
end 

Si he realizado esto con jrubyc ¿hay alguna manera de que pudiera luego, posiblemente, hacer algo como esto en Java:

import adder; 
class anything { 
    void testMethod() 
    { 
     adder a = new adder(); 
     int x = a.addme(); 
    } 
} 

Después de mirarlo ahora Me hace pensar que Java no tendrá idea de qué clase de item test addme va a devolver, por lo que podría no funcionar. No lo sé, pero quería tirarlo allí de todos modos.

Gracias

Respuesta

0

Es posible con el paquete de inserción en JRuby, pero creo que la forma está más allá del alcance de una respuesta aquí. Mira esto: http://kenai.com/projects/jruby/pages/RedBridge

+0

eso no es nativa llamada a los métodos sin embargo, que es el uso de un recipiente. –

1

En realidad hay dos formas en las que puede llamar código Ruby desde Java la primera es más lenta pero se puede cambiar en tiempo de ejecución es invocar el motor de guión como de esta link. Pero en cuanto a cómo lo hizo, jrubyc compila rubí a bytecode java java que significa lo verá como el código de Java

jrubyc adder.rb --java Compilación de archivo "adder.rb" como clase "Adder.class"

y tal como lo ha hecho ...

por lo que diría que es como cualquier otra clase java

import org.jruby.RubyObject 

Adder ad = new Adder(); 

RubyObject ro = ad.addme(); 

resource

+0

Desafortunadamente eso no funcionó para mí. No pudo encontrar el método addme(). Definitivamente está allí y es público, así que no sé por qué –