我正在使用eclipse插件,它将有一个向导。当鼠标右键单击Java编辑器时,将从上下文菜单中以示例的形式提供此向导。
该向导将负责收集以下信息:
当向导完成时,我希望在早期提供的包中生成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 = new WSDLToJava(args); ToolContext t = new ToolContext(); w.run(t);
前几行例外是:
java.lang.NoClassDefFoundError: org/apache/cxf/tools/wsdlto/WSDLToJava at plugin.wsreplication.ui.wizard.component.AddComponentWizard.performFinish(AddComponentWizard.java:160) at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:752) at plugin.wsreplication.ui.wizard.component.AddComponentWizardDialog.finishPressed(AddComponentWizardDialog.java:39) at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:373) at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at plugin.wsreplication.ui.action.AddComponentAction.run(AddComponentAction.java:35) at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
答案 0 :(得分:0)
听起来像cxf-tools不在你的Classpath上。
我不确定它如何与Eclipse插件和OSGi一起使用,以及如何为插件指定类路径,但是您需要能够指定CXF JAR在类路径中的位置。
答案 1 :(得分:0)
在为插件设置环境时,您似乎遇到了错误。查看this列表以获取详细信息。
如果错误不会消失,请尝试使用System.getProperty("java.class.path")
找出实际的类路径。如果jar真的在类路径上,问题可能出在Eclipse本身。
答案 2 :(得分:0)
我有同样的问题。在堆栈溢出中偶然发现了这个问题。我重新启动日食后问题就解决了。
问题是由于Apache CXF jar未在eclipse中设置。一旦在eclipse中设置了CXF的主路径。需要重新启动Eclipse以获取jar。希望这对面临同样问题的人有帮助