Skip to content

[10.1.0.0] Java::JavaLang::IllegalArgumentException: argument type mismatch #9393

Description

@boris-petrov

Environment Information

Provide at least:

  • JRuby version (jruby -v) and command line - 10.1.0.0
  • Operating system and platform (e.g. uname -a) - Arch Linux

My code is something like the following:

Ruby:

def some_method(arg = {})
  com.my_org.groovy.SomeClass.method(arg)
end

some_method(name: 'foo')

Groovy:

class SomeClass {
  method(Map arg = [:]) {
    arg['foo'] = 10
  }
}

Ruby is calling into Groovy and passing a Ruby hash which is updated in Groovy. This used to work in 10.0.5.0. 10.1.0.0 blows up with:

     Java::JavaLang::IllegalArgumentException:
       argument type mismatch
     # jdk.internal.reflect.DirectMethodHandleAccessor.invoke(jdk/internal/reflect/DirectMethodHandleAccessor.java:108)
     # java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:565)
     # org.codehaus.groovy.reflection.CachedMethod.invoke(org/codehaus/groovy/reflection/CachedMethod.java:343)
     # groovy.lang.MetaMethod.doMethodInvoke(groovy/lang/MetaMethod.java:328)
     # groovy.lang.MetaClassImpl.setProperty(groovy/lang/MetaClassImpl.java:2900)
     # groovy.lang.MetaClassImpl.setProperty(groovy/lang/MetaClassImpl.java:3897)
     # org.codehaus.groovy.runtime.InvokerHelper.setProperty(org/codehaus/groovy/runtime/InvokerHelper.java:194)
     # org.codehaus.groovy.runtime.DefaultGroovyMethods.putAt(org/codehaus/groovy/runtime/DefaultGroovyMethods.java:439)
     # org.codehaus.groovy.runtime.dgm$638.doMethodInvoke(org/codehaus/groovy/runtime/dgm$638)
     # groovy.lang.MetaClassImpl.doInvokeMethod(groovy/lang/MetaClassImpl.java:1341)
     # groovy.lang.MetaClassImpl.invokeMethod(groovy/lang/MetaClassImpl.java:1096)
     # groovy.lang.MetaClassImpl.invokeMethod(groovy/lang/MetaClassImpl.java:1009)
     # org.codehaus.groovy.runtime.InvokerHelper.invokePojoMethod(org/codehaus/groovy/runtime/InvokerHelper.java:633)
     # org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(org/codehaus/groovy/runtime/InvokerHelper.java:624)
     # org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java:183)
     # com.my_org.groovy.SomeClass.method(com/my_org/groovy/SomeClass.groovy:33)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions