从JRuby调用Java方法时遇到一个奇怪的问题.
在我的Java类中,这些方法定义了两次,看来JRuby调用了错误的方法.
所以我尝试使用java_method,但是我总是得到:
TypeError: cannot convert instance of class org.jruby.RubyModule to class java.lang.Class
这是我的Java代码:
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);
}
}
和我的JRuby代码:
add_renderer = renderer.java_method :add_renderer, [Java::dragon.render.IElementRenderer]
add_renderer.call TextRenderer.new
我也尝试了java_send,但是出现了同样的错误:
renderer.java_send(:add_renderer, [Java::dragon.render.IElementRenderer], TextRenderer.new)
接下来,我尝试了:
renderer.add_renderer(TextRenderer.new.to_java(IElementRenderer))
这次没有错误,但是调用了错误的方法…
我该如何解决这个问题?