JRuby calls the wrong method

I am having a weird problem calling a Java method from JRuby .

In my Java class, these methods are defined twice, and JRuby appears, which causes the wrong one.

So I tried to use java_method, but always got:

TypeError: cannot convert instance of class org.jruby.RubyModule to class java.lang.Class

Here is my Java code:

public class Renderer {

    ...
    public void addRenderer(IElementRenderer r) {
        System.out.println("Added element render: " + r.getClass().toString());

        basicRenderers.add(r);
        rendererMap.put(r.elementClass(), r);
    }

    public void addRenderer(IBasicRenderer r) {
        System.out.println("SHOULD NOT GO THERE !!");
        basicRenderers.add(r);
    }
}

and my JRuby code:

add_renderer = renderer.java_method :add_renderer, [Java::dragon.render.IElementRenderer]
add_renderer.call TextRenderer.new

I also tried with java_send, but I got the same error:

renderer.java_send (: add_renderer, [Java :: dragon.render.IElementRenderer], TextRenderer.new)

Next I tried:

renderer.add_renderer (TextRenderer.new.to_java (IElementRenderer))

Errors this time, but the wrong method is being called ...

How can I fix this problem?

+3
2

cannot convert instance of class org.jruby.RubyModule to class java.lang.Class java.lang.Class.for_name

add_renderer = renderer.java_method :add_renderer, [java.lang.Class.for_name("dragon.render.IElementRenderer")]

, java Ruby , : java_method .

, , . , , println (String) System.out.

>>java.lang.System.out.java_method "println", [java.lang.Class.for_name("java.lang.String")]
#<Method: Java::JavaIo::PrintStream#(java.lang.String)>
+4

, . , , JRuby . JRuby?

, -. -, , .

0

All Articles