Parsing Groovy-方法的不明确方法重载

Parsing Groovy-方法的不明确方法重载,parsing,groovy,wsdl,Parsing,Groovy,Wsdl,我已经检查了论坛,找到了一些关于这个问题的提示,但没有一个完全符合我的 我在调用WSDLParse.parse方法后得到了这个异常。 顺便说一下,我正在尝试将Groovy版本2.2.1更新为2.4.3,我是否遗漏了什么 谢谢你的建议 Ps:这是异常消息,下面您可以找到所有stacktrace groovy.lang.GroovyRuntimeException:方法com.predic8.schema.Element#setType的方法重载不明确。 由于以下对象之间的原型重叠,无法解析要为[n

我已经检查了论坛,找到了一些关于这个问题的提示,但没有一个完全符合我的

我在调用WSDLParse.parse方法后得到了这个异常。 顺便说一下,我正在尝试将Groovy版本2.2.1更新为2.4.3,我是否遗漏了什么

谢谢你的建议

Ps:这是异常消息,下面您可以找到所有stacktrace

groovy.lang.GroovyRuntimeException:方法com.predic8.schema.Element#setType的方法重载不明确。 由于以下对象之间的原型重叠,无法解析要为[null]调用的方法: [类javax.xml.namespace.QName] [groovy.xml.QName类]

  groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method com.predic8.schema.Element#setType.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
        [class javax.xml.namespace.QName]
        [class groovy.xml.QName]
        at groovy.lang.MetaClassImpl.chooseMostSpecificParams(MetaClassImpl.java:3238)
        at groovy.lang.MetaClassImpl.chooseMethodInternal(MetaClassImpl.java:3191)
        at groovy.lang.MetaClassImpl.chooseMethod(MetaClassImpl.java:3134)
        at groovy.lang.MetaClassImpl.getNormalMethodWithCaching(MetaClassImpl.java:1369)
        at groovy.lang.MetaClassImpl.getMethodWithCaching(MetaClassImpl.java:1284)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1054)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
        at org.codehaus.groovy.runtime.metaclass.MultipleSetterProperty.setProperty(MultipleSetterProperty.java:52)
        at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2663)
        at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:3746)
        at com.predic8.soamodel.XMLElement.setProperty(XMLElement.groovy)
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setGroovyObjectProperty(ScriptBytecodeAdapter.java:530)
        at com.predic8.schema.Element.parseAttributes(Element.groovy:46)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.ja
va:207)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:56)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
        at com.predic8.soamodel.XMLElement.parse(XMLElement.groovy:40)
        at com.predic8.soamodel.XMLElement$parse$0.call(Unknown Source)
        at com.predic8.schema.Schema.parseChildren(Schema.groovy:109)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.ja
va:207)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:56)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:179)
        at com.predic8.soamodel.XMLElement.parse(XMLElement.groovy:45)
        at com.predic8.soamodel.XMLElement$parse$0.call(Unknown Source)
        at com.predic8.wsdl.Types.parseChildren(Types.groovy:41)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.ja
va:207)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:56)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:179)
        at com.predic8.soamodel.XMLElement.parse(XMLElement.groovy:45)
        at com.predic8.soamodel.XMLElement$parse$0.call(Unknown Source)
        at com.predic8.wsdl.Definitions.parseChildren(Definitions.groovy:220)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.ja
va:207)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:56)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:179)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:177)
        at com.predic8.soamodel.XMLElement.parse(XMLElement.groovy:45)
        at com.predic8.soamodel.XMLElement$parse$0.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130)
        at com.predic8.wsdl.WSDLParser.parseLocal(WSDLParser.groovy:44)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.ja
va:207)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:56)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:169)
        at com.predic8.soamodel.AbstractParser.parse(AbstractParser.groovy:34)
        at com.predic8.wsdl.WSDLParser.super$2$parse(WSDLParser.groovy)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:130)
        at com.predic8.wsdl.WSDLParser.parse(WSDLParser.groovy:24)
        at com.predic8.wsdl.WSDLParser$parse.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:122)
        at ESBWsdlRequest.<init>(ESBWsdlRequest.groovy:23)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
        at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java
:102)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:232)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:268)
        at YOKSIS_OGRENCI_SIL_in.run(YOKSIS_OGRENCI_SIL_in.groovy:2)
        at groovy.util.GroovyScriptEngine.run(GroovyScriptEngine.java:589)
        at com.fibabanka.esi.xslt.ESBGroovyEngine.execute(ESBGroovyEngine.java:21)
        at com.fibabanka.esi.xslt.Transformer.transformGroovy(Transformer.java:102)
        at com.fibabanka.esi.xslt.Transformer.transformIn(Transformer.java:63)
        at com.fibabanka.esi.xslt.XsltProcessor.processBag(XsltProcessor.java:92)
        at com.fibabanka.esi.common.GenericProcessor.processTypeBag(GenericProcessor.java:27)
        at com.fibabanka.esi.common.GenericProcessor.process(GenericProcessor.java:37)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:340)
        at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:237)
        at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:168)
        at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
        at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
        at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
        at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:71)
        at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
        at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
        at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
        at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
        at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
        at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:322)
        at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:213)
        at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
        at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
        at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
        at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
        at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
        at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
        at org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
        at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
        at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
        at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
        at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
        at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:71)
        at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
        at org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:248)
        at org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:160)
        at org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:131)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
您可能应该编辑的

差不多

type = (QName) getTypeQName(token.getAttributeValue( null , 'type'))
解决歧义。同时,您可以手动覆盖自己,如下所示

@Grab(group='ch.qos.logback',module='logback-classic',version='1.1.3')
@Grab(group='org.apache.httpcomponents',module='httpclient',version='4.5')
//由于某些原因,这无法在GroovyConsole中解决--我必须下载到.groovy/lib中
//@GrabResolver(名称为'membrane',根为'http://repository.membrane-soa.org/content/repositories/releases')
//@Grab(group='com.predic8',module='soa-model-core',version='1.5.3')
//出于某种原因,我在GroovyConsole中得到了“java.lang.NoClassDefFoundError:由于缺少依赖项Lorg/slf4j/Logger;”,无法加载类com.predic8.schema.SchemaComponent;”,而我没有这个
@GrabConfig(systemClassLoader=true,initContextClassLoader=true)
导入com.predic8.wsdl.Definitions
导入com.predic8.wsdl.Operation
导入com.predic8.wsdl.PortType
导入com.predic8.wsdl.WSDLParser
导入com.predic8.schema.Declaration
将javax.xml.namespace.QName作为JQName导入
导入groovy.xml.QName
//修复
MetaMethod originalSetType=Declaration.metaClass.getMetaMethod(“setType”,[Object])
Declaration.metaClass.setType={Object obj->
如果(obj)
originalSetType.invoke((QName)obj)
}
//示例用法,演示修复程序的工作原理
Definitions defs=new WSDLParser().parse(“http://www.w3schools.com/webservices/tempconvert.asmx?WSDL")
对于(端口类型pt:defs.portTypes){
println pt.name
用于(操作操作:pt.操作)
println“-${op.name}”
}

由于您使用的是类(我假设是在编译的项目中),您可能会将修复放在一个静态块中。

问题在于有两个对象兼容的单参数setType方法,您可以使用
null
调用它。或者更准确地说,您不调用方法,而是设置属性,这将导致方法调用

在Groovy2.4之前,我们不支持重载情况。调用哪个方法实际上是随机的。换句话说,如果它总是为您的案例调用正确的方法,那么您就幸运了。自Groovy2.4以来,Groovy支持重载setter,但这可能导致setter重载导致上述异常的情况。有些东西我认为是好的,因为它显示了过去可能会引起神秘错误的东西。 修复没有那么好<代码>设置类型((QName)QName))而不是属性分配。。。。当然可以选择QName类。当然,你可以利用基冈的建议来支持你


编辑:将setElement更改为setType,升级至1.6.0。例如,对于Gradle构建脚本:

compile "com.predic8:soa-model-core:1.6.0"

我没有在代码中设置属性或元素。这很奇怪(我现在将更新我的问题,请看一下)我认为@blackdrag的意思是
Element.setType()
,而不是
setElement()
。但他说得对。您可能没有调用此方法,但Membrane是,正如
parse()
所做的一样。非常感谢blackdrag,因为您的响应通常是金色的。通过运行下面的脚本,我们找到了冲突发生的地方。我们很快发现,我们的冲突发生在user/.groovy/lib/jaxrpc.jar的用户库和jre/lib/rt.jar的jdk之间。在我们的场景中,删除jaxrpc.jar是正确的选择<代码>导入javax.xml.namespace.QName类klass=QName.Class;URL location=klass.getResource('/'+klass.getName().replace('.','/')+“.class”);println location我想,我还需要将我的soa模型核心升级到1.5.3
type = (QName) getTypeQName(token.getAttributeValue( null , 'type'))
compile "com.predic8:soa-model-core:1.6.0"