创建代理时的java.lang.NoClassDefFoundError

时间:2010-12-09 07:29:45

标签: java web-services

当我尝试在java中创建Web服务代理时,我总是得到。我期待Web服务,但它可以工作,我可以调用它。为什么我不能创建代理?

  

java.lang.NoClassDefFoundError:   XXX / GetBibliografijeXml   (错误的名字:   XXX / GetBibliografijeXML)     在   java.lang.ClassLoader.defineClass1(母语   方法)at   需要java.lang.ClassLoader.defineClass(ClassLoader.java:620)     在   java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)     在   java.net.URLClassLoader.defineClass(URLClassLoader.java:260)     在   java.net.URLClassLoader.access $ 100(URLClassLoader.java:56)     在   java.net.URLClassLoader的$ 1.run(URLClassLoader.java:195)     在   java.security.AccessController.doPrivileged(母语   方法)at   java.net.URLClassLoader.findClass(URLClassLoader.java:188)     在   java.lang.ClassLoader.loadClass(ClassLoader.java:306)     在   java.lang.ClassLoader.loadClass(ClassLoader.java:251)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.SchemaAnalyzer.getValueClassBeanInfo(SchemaAnalyzer.java:465)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.ComplexTypeBindingModeler.structuredType(ComplexTypeBindingModeler.java:142)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.ComplexTypeBindingModeler.complexType(ComplexTypeBindingModeler.java:442)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.LiteralSchemaTypeModeler.complexType(LiteralSchemaTypeModeler.java:495)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.LiteralSchemaTypeModeler.schemaType(LiteralSchemaTypeModeler.java:373)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.LiteralSchemaTypeModeler.globalElement(LiteralSchemaTypeModeler.java:446)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.SchemaAnalyzer.schemaElementTypeToLiteralType(SchemaAnalyzer.java:403)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.OperationModeler.getElementTypeToLiteralType(OperationModeler.java:588)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.DocLiteralOperationModeler.buildInput(DocLiteralOperationModeler.java:527)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.DocLiteralOperationModeler.buildOperation(DocLiteralOperationModeler.java:256)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.OperationModeler.process(OperationModeler.java:93)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.WSDLModeler.processSOAPOperation(WSDLModeler.java:1086)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.WSDLModeler.processBindingOperation(WSDLModeler.java:1020)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.WSDLModeler.createNewPort(WSDLModeler.java:884)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.WSDLModeler.processPort(WSDLModeler.java:757)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.WSDLModeler.processService(WSDLModeler.java:671)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.WSDLModeler.internalBuildModel(WSDLModeler.java:396)     在   oracle.j2ee.ws.common.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:215)     在   oracle.j2ee.ws.common.processor.config.ModelInfo.buildModel(ModelInfo.java:173)     在   oracle.j2ee.ws.common.processor.Processor.runModeler(Processor.java:72)     在   oracle.j2ee.ws.tools.wsa.AssemblerTool.run(AssemblerTool.java:95)     在   oracle.j2ee.ws.tools.wsa.WsdlToJavaTool.createProxy(WsdlToJavaTool.java:356)     在   oracle.j2ee.ws.tools.wsa.Util.createProxy(Util.java:838)     在   oracle.jdeveloper.webservices.model.proxy.ProxyGenerator.doGeneration(ProxyGenerator.java:553)     在   oracle.jdeveloper.webservices.model.proxy.ProxyGenerator.generateImpl(ProxyGenerator.java:365)     在   oracle.jdeveloper.webservices.model.proxy.ProxyGenerator.mav $ generateImpl(ProxyGenerator.java:77)     在   oracle.jdeveloper.webservices.model.proxy.ProxyGenerator $ 1ThrowingRunnable.run(ProxyGenerator.java:206)     在   oracle.jdeveloper.webservices.model.GeneratorUI $ GeneratorAction.run(GeneratorUI.java:446)     在   oracle.ide.dialogs.ProgressBar.run(ProgressBar.java:551)     在   java.lang.Thread.run(Thread.java:595)

1 个答案:

答案 0 :(得分:1)

好吧,看起来有些东西使用了错误的情况:

java.lang.NoClassDefFoundError: xxx/GetBibliografijeXml
    (wrong name: xxx/GetBibliografijeXML) 

请注意“XML”的大写。

检查所有名称的使用情况,并确保案例在任何地方都一致。该课程是自动生成的课程,还是您自己编写的课程?

另外请记住,如果你是一个不区分大小写的操作系统,并且直接从磁盘加载类(没有来自jar文件等),它可能会找到一个旧的类文件 - 你赢了'只能在这样的文件系统上有两个名称不同的类,因为类文件会发生冲突。如果你的WSDL使用两种情况,它可能有生成两个类,但是你最终只能在磁盘上有一个文件:(