我正在开发将有一个向导的 eclipse 插件。当鼠标右键单击 Java 编辑器时,该向导将从上下文菜单中的示例中可用。
该向导将负责收集以下信息:
- WSDL 文件的位置
- 包裹名字
向导完成后,我希望将 WSDL 中描述的 Web 服务的存根生成到前面提供的包中。
问题是:如何从源代码(而不是命令行)动态生成 web 服务存根并将其添加到当前项目中?
到目前为止,我遇到了 WSDL2Java (Axis)、Apache CXF 和 wsimport。我尝试使用 Apache CXF 和 wsimport,但我总是得到 ClassNotFoundException,即使所有 jar 都包含在 buildpath 中。我想我可能用错了。
请帮助我的人!该任务的时间不多了:-(
小例子:
假设代码是(Apache CXF):
String[] args = {"-client", "-d", "D:\\test", "D:\test.wsdl" }; WSDLToJava w = 新的 WSDLToJava(args); ToolContext t = new ToolContext(); w.run(t);
前几行异常是:
java.lang.NoClassDefFoundError: org/apache/cxf/tools/wsdlto/WSDLToJava 在 plugin.wsreplication.ui.wizard.component.AddComponentWizard.performFinish(AddComponentWizard.java:160) 在 org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:752) 在 plugin.wsreplication.ui.wizard.component.AddComponentWizardDialog.finishPressed(AddComponentWizardDialog.java:39) 在 org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:373) 在 org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624) 在 org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228) 在 org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 在 org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) 在 org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910) 在 org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503) 在 org.eclipse.jface.window.Window.runEventLoop(Window.java:825) 在 org.eclipse.jface.window.Window.open(Window.java:801) 在 plugin.wsreplication.ui.action.AddComponentAction.run(AddComponentAction.java:35) 在 org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)