-1

我正在开发将有一个向导的 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)
4

3 回答 3

0

似乎您在为插件设置环境时出错了。检查列表以获取详细信息。如果错误不会消失,请尝试使用System.getProperty("java.class.path"). 如果 jar 确实在类路径上,则问题可能出在 Eclipse 本身。

于 2010-06-28T22:41:46.753 回答
0

听起来 cxf-tools 不在您的类路径中。

我不确定它如何与 Eclipse 插件和 OSGi 一起使用,以及如何为您的插件指定类路径,但您需要能够指定 CXF JAR 在类路径中的位置。

于 2010-06-28T21:02:16.140 回答
0

我遇到过同样的问题。在堆栈溢出中偶然发现了这个问题。重启eclipse后问题就解决了。

问题是由于 Apache CXF jar 未在 eclipse 中设置。一旦在 Eclipse 中设置了 CXF 的主路径。需要重新启动 Eclipse 以获取 jars。希望这对面临相同问题的人有所帮助

于 2012-12-14T09:49:34.123 回答