Regression: Inheriting method with same name from two Java interfaces causes
Java classloader error
---------------------------------------------------------------------------------------------------
Key: JRUBY-2999
URL: http://jira.codehaus.org/browse/JRUBY-2999
Project: JRuby
Issue Type: Bug
Components: Java Integration
Affects Versions: JRuby 1.1.4
Reporter: Dmitry Jemerov
{code}
public interface InterruptibleRunnable {
void run() throws Exception;
}
{code}
{code}
class MyRunnable
include java.lang.Runnable
include InterruptibleRunnable
def run; end
end
{code}
This code works on JRuby 1.1.3, but causes an exception on JRuby trunk (tested
with r7708):
{code}
java.lang.ClassFormatError: Duplicate method name&signature in class file
InterfaceImpl1388241424
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at org.jruby.util.JRubyClassLoader.defineClass(JRubyClassLoader.java:22)
at org.jruby.java.MiniJava.defineOldStyleImplClass(MiniJava.java:510)
at org.jruby.java.MiniJava.createOldStyleImplClass(MiniJava.java:193)
at org.jruby.javasupport.Java.new_proxy_instance2(Java.java:1565)
at
org.jruby.java.proxies.JavaInterfaceTemplate.jcreateProxy(JavaInterfaceTemplate.java:251)
at
org.jruby.java.proxies.JavaInterfaceTemplate.access$000(JavaInterfaceTemplate.java:23)
at
org.jruby.java.proxies.JavaInterfaceTemplate$3.call(JavaInterfaceTemplate.java:158)
at
org.jruby.internal.runtime.methods.JavaMethod$JavaMethodNoBlock.call(JavaMethod.java:62)
at org.jruby.RubyClass.finvoke(RubyClass.java:343)
at
org.jruby.javasupport.util.RuntimeHelpers.invoke(RuntimeHelpers.java:297)
at
org.jruby.java.proxies.JavaInterfaceTemplate$2.call(JavaInterfaceTemplate.java:142)
at
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:242)
at
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:151)
at
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:275)
at
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:116)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at
org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:163)
at
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:140)
at
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:232)
at
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:266)
at
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:85)
at
org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:63)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:67)
at
org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:163)
at
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:140)
at
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:190)
at
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:248)
at
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:34)
at org.jruby.ast.CallManyArgsNode.interpret(CallManyArgsNode.java:59)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:67)
at
org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:163)
at
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:140)
{code}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email