【问题标题】:NoSuchMethodError on creating a web service client创建 Web 服务客户端时出现 NoSuchMethodError
【发布时间】:2012-05-15 02:03:18
【问题描述】:

我是 Java 和 Web 服务的新手,axis2。我最近使用一些教程创建了一个 Web 服务。当我第一次按照教程 eclipse 让我创建一个客户端时。但是当我尝试创建一个新项目和一个新的 Web 服务客户端时,它会给出NoSuchMethodError。看起来像这样:

为 WSDL 生成代码时发生异常: java.lang.NoSuchMethodError: javax.wsdl.Operation.getExtensionAttributes()Ljava/util/Map; java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在 java.lang.reflect.Method.invoke(未知来源) 在 org.eclipse.jst.ws.axis2.consumption.core.utils.WSDL2JavaGenerator.getAxisService(WSDL2JavaGenerator.java:379) 在 org.eclipse.jst.ws.axis2.consumption.core.command.Axis2ClientCodegenCommand.execute(Axis2ClientCodegenCommand.java:94) 在 org.eclipse.wst.command.internal.env.core.fragment.CommandFragmentEngine.runCommand(CommandFragmentEngine.java:419) 在 org.eclipse.wst.command.internal.env.core.fragment.CommandFragmentEngine.visitTop(CommandFragmentEngine.java:359) 在 org.eclipse.wst.command.internal.env.core.fragment.CommandFragmentEngine.moveForwardToNextStop(CommandFragmentEngine.java:254) 在 org.eclipse.wst.command.internal.env.ui.widgets.SimpleCommandEngineManager$6.run(SimpleCommandEngineManager.java:294) 在 org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:369) 在 org.eclipse.jface.operation.ModalContext.run(ModalContext.java:313) 在 org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:934) 在 org.eclipse.wst.command.internal.env.ui.widgets.SimpleCommandEngineManager.runForwardToNextStop(SimpleCommandEngineManager.java:264) 在 org.eclipse.wst.command.internal.env.ui.widgets.WizardPageManager.runForwardToNextStop(WizardPageManager.java:91) 在 org.eclipse.wst.command.internal.env.ui.widgets.WizardPageManager.performFinish(WizardPageManager.java:262) 在 org.eclipse.wst.command.internal.env.ui.widgets.DynamicWizard.performFinish(DynamicWizard.java:380) 在 org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:742) 在 org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:373) 在 org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:618) 在 org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227) 在 org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) 在 org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938) 在 org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682) 在 org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293) 在 org.eclipse.jface.window.Window.runEventLoop(Window.java:820) 在 org.eclipse.jface.window.Window.open(Window.java:796) 在 org.eclipse.ui.actions.NewWizardAction.run(NewWizardAction.java:182) 在 org.eclipse.jface.action.Action.runWithEvent(Action.java:498) 在 org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546) 在 org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490) 在 org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402) 在 org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) 在 org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938) 在 org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682) 在 org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293) 在 org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389) 在 org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353) 在 org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219) 在 org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466) 在 org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289) 在 org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461) 在 org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 在 org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) 在 org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169) 在 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) 在 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) 在 org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363) 在 org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在 java.lang.reflect.Method.invoke(未知来源) 在 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508) 在 org.eclipse.equinox.launcher.Main.basicRun(Main.java:447) 在 org.eclipse.equinox.launcher.Main.run(Main.java:1173) 引起:java.lang.NoSuchMethodError: javax.wsdl.Operation.getExtensionAttributes()Ljava/util/Map; 在 org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateOperations(WSDL11ToAxisServiceBuilder.java:1427) 在 org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populatePortType(WSDL11ToAxisServiceBuilder.java:606) 在 org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateEndpoints(WSDL11ToAxisServiceBuilder.java:483) 在 org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:373) ... 56 更多

我使用的是axis2-1.6.1,它说java合规级别是6 我用谷歌搜索,但找不到这个问题的相关解决方案。 任何帮助表示赞赏。

【问题讨论】:

  • 能否把方法名贴在你的web服务提供者和客户端(包括参数)?
  • 方法声明为'public String SearchandDisplay(String word, String text)'
  • 请发布确切的axis2版本,以及您使用的JDK版本
  • 检查您的 Web 服务类中的方法是否具有 @WebService 注释并在您的 wsdl 中声明
  • 我使用的是axis2-1.6.1,它说java合规级别是6

标签: java axis2 webservice-client nosuchmethoderror


【解决方案1】:

我遇到了同样的问题,并通过查看我的 WEB-INF/lib 解决了它。
我的 WEB-INF 中有两个任意 AXIS2 jar 文件。
如果将两个不同版本的axis2的jar文件复制到WEB-INF,也会发生这种情况。

希望它有效:-)

【讨论】:

    【解决方案2】:

    请按照以下说明操作。

    1. 确保您的 Web 服务在服务器中可用。请通过查看您的 Web 服务的 WSDL 进行检查。
    2. 然后按照其中一篇文章的说明进行操作,

    web-service-client-using-eclipse-axis2
    BottomUpAxis2WebService

    它对我来说很好。确保您的代码生成插件已为 Eclipse 正确安装。

    【讨论】:

      【解决方案3】:

      问题在于 Eclipse“没有找到任何东西”。

      这是一个例子;这里的解决方案是:

      1. 确保所有必要的 .jar 库都包含在项目中

      2. 进行部署时在类加载中选择“先搜索本地类”

      Error in AXIS2 when i try publish ODI web services

      【讨论】:

      • 我已经看过这个,因为我对 java 很陌生,我找不到“丢失的库”,而且当我第一次创建服务时它没有抱怨
      • Luiggi Mendoza 关于“@WebService”注释的评论是个好建议——请仔细检查。 Java 区分大小写:方法“myMethod()”和方法“MyMethod()”是两个不同的东西。如果您不小心输入了一个 - 但实际上是另一个 - 程序将编译......但可能会在运行时失败并出现“NoSuchMethod”错误。
      • 我不知道在哪里检查“@WebService”,问题是我无法创建客户端,所以我无法在任何地方调用任何函数。当我尝试创建它时,问题就来了。不是在我打电话的时候
      猜你喜欢
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多