2010-05-04 12 views
7

Così mi è venuta l'idea generale di scrivere del codice in JRuby, quindi accedere a tutte le classi tramite Java. Non ho idea se sia possibile, ma ho voluto chiedere comunque. Consente di dire che qualche codice JRuby:Puoi chiamare le classi JRuby compilate da java?

class adder 
    def addme 
     return 22 
    end 
end 

Se ho compilato questo con jrubyc c'è alcun modo ho potuto poi eventualmente fare qualcosa di simile in java:

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

Dopo guardando ora mi fa pensare che Java avrà zero idea di quale tipo di addme test del prodotto verrà restituito in modo che potrebbe non funzionare. Non lo so, ma ho voluto buttarlo là fuori comunque.

Grazie

risposta

0

E 'possibile con il pacchetto embed in JRuby, ma credo che quanto è oltre la portata di una risposta qui. Check this out: http://kenai.com/projects/jruby/pages/RedBridge

+0

che non è nativamente chiamando i metodi però, che utilizza un contenitore. –

1

In realtà ci sono due modi in cui è possibile chiamare il codice rubino da Java la prima è più lento, ma si può cambiare in fase di esecuzione è quello di richiamare il motore di script come da questo link. ma quanto a come hai fatto, jrubyc compila rubino a javaBytecode che significa java lo vedrà come codice Java

jrubyc adder.rb --java Compilazione file "adder.rb" come classe "Adder.class"

e proprio come hai fatto ...

modo si sarebbe chiamata come qualsiasi altra classe java

import org.jruby.RubyObject 

Adder ad = new Adder(); 

RubyObject ro = ad.addme(); 

resource

+0

Purtroppo non ha funzionato per me. Non è stato possibile trovare il metodo addme(). È sicuramente lì ed è pubblico, quindi non so perché –

Problemi correlati