Duvida com Java + JRuby

Pessoal estou com a seguinte duvida em JRuby. Preciso passar uma lista para Java pelo que eu percebi a ida está beleza. O problema é o retorno onde eu não consigo fazer o tratamento da conversão de Objeto de JRuby para Java.
Mas também não tenho certeza se foi corretamente.
Ficaria grato se alguém pudesse ajudar.

Segue a lista:

List<String> arrObj = new ArrayList<String>(); arrObj.add("Rio de Janeiro"); arrObj.add("Belo Horizonte"); arrObj.add("Salvador"); arrObj.add("Natal"); arrObj.add("Cuiabá");,

O método que chama a função de JRuby:

public List<String> engine(String arq, List<String> arrObj){ List<String> aux = null; ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine se = sem.getEngineByExtension("rb"); InputStream is = ClassLoader.getSystemResourceAsStream(arq); Reader reader = new InputStreamReader(is); try { se.eval(reader); } catch (ScriptException e) { e.printStackTrace(); } Invocable ie = (Invocable)se; if(ie != null){ try { aux = (List<String>) ie.invokeFunction("ordena", arrObj); //Exceção nesta linha. } catch (ScriptException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return aux; }

O método de JRuby:

def ordena(arrObj) return arrObj.sort! end

Segue a exceção:

javax.script.ScriptException: org.jruby.exceptions.RaiseException at com.sun.script.jruby.JRubyScriptEngine.invokeImpl(JRubyScriptEngine.java:517) at com.sun.script.jruby.JRubyScriptEngine.invokeFunction(JRubyScriptEngine.java:136) at calculadora.Calculadora.engine(Calculadora.java:553) at calculadora.Calculadora.actionPerformed(Calculadora.java:453) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Caused by: org.jruby.exceptions.RaiseException

não duplique… http://www.guj.com.br/posts/list/91813.java

oi Anderson,

E o resto da stacktrace? Parece que deu alguma exception no seu codigo ruby.
Não deu tempo de testar aqui, mas de qq forma, antes de fazer o cast direto do retorno do script ruby para List<String> tente a coerção. Algo como:

List&lt;String&gt; ordenada = (List&lt;String&gt;) JavaEmbedUtils.rubyToJava(runtime, lista, List.class)

Eu não tenho certeza se precisa da coerção explícita nesse caso…

[quote=Fabio Kung]oi Anderson,

E o resto da stacktrace? Parece que deu alguma exception no seu codigo ruby.
Não deu tempo de testar aqui, mas de qq forma, antes de fazer o cast direto do retorno do script ruby para List<String> tente a coerção. Algo como:

List&lt;String&gt; ordenada = (List&lt;String&gt;) JavaEmbedUtils.rubyToJava(runtime, lista, List.class)

Eu não tenho certeza se precisa da coerção explícita nesse caso…[/quote]

Oi Fabio irei tentar sim. Obrigado.