我已经检查过论坛,找到了一些关于这个问题的提示,但没有一个与我的完全匹配。

在调用 WSDLParse.parse 方法后,我得到了这个异常。
顺便说一句,我正在尝试将我的 Groovy 版本 2.2.1 更新到 2.4.3,我错过了什么吗?

谢谢你的建议

Ps:这是异常信息,下面你可以找到所有的堆栈跟踪。

groovy.lang.GroovyRuntimeException:方法 com.predic8.schema.Element#setType 的方法重载不明确。
由于以下之间的原型(prototype)重叠,无法解析为 [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)

我没有设置元素也没有设置属性。此外,我没有在我的脚本中使用任何 QName 类。
这是我的常规脚本文件->
import groovy.time.BaseDuration.From;
import groovy.util.XmlParser;
import groovy.util.XmlSlurper;
import groovy.xml.MarkupBuilder;
import groovy.xml.XmlUtil;

import java.io.StringWriter;

import com.predic8.wsdl.Definitions;
import com.predic8.wsdl.WSDLParser;
import com.predic8.wstool.creator.RequestTemplateCreator;
import com.predic8.wstool.creator.SOARequestCreator;

class ESBWsdlParser {
    String formTemplate;
    String requestSoapXml;
    public ESBWsdlRequest(String wsdlFile,String operationName) {
        File file = new File(wsdlFile);
        println file.getAbsolutePath();

        WSDLParser parser = new WSDLParser();
        Definitions wsdl = parser.parse(wsdlFile);
        StringWriter writer = new StringWriter();
        SOARequestCreator creator = new SOARequestCreator(wsdl, new RequestTemplateCreator(), new MarkupBuilder(writer));
        //creator.createRequest(PortType name, Operation name, Binding name);
        creator.createRequest(null, operationName, null);
        formTemplate = writer.toString();

    }
    public String resolveName(c){
        String[] arParts = c.name().toString().split("}");
        if(arParts.length > 1){
            return  arParts[1];
        }
        return c.name;
    }

最佳答案

问题是有两个对象兼容和单参数的 setType 方法,你用 null 调用它。或者更准确地说,您不调用方法,而是设置属性,从而导致方法调用。

现在在 Groovy 2.4 之前,我们不支持重载的情况。调用哪个方法实际上是随机的。换句话说,如果它总是为您的案例调用正确的方法,那您就很幸运了。从 Groovy 2.4 开始,Groovy 支持重载 setter,但这可能会导致 setter 重载导致上述异常的情况。我认为很好的东西,因为它显示了过去可能导致神秘错误的东西。

修复不是那么好...... setType((QName) qname)) 而不是属性分配......当然还有你选择的 QName 类。你当然可以使用 Keegan 的建议来支持你

编辑:将 setElement 更改为 setType

关于parsing - Groovy - 方法的二义性方法重载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30639269/

10-14 20:22
查看更多