Создать заглушку веб-сервиса из wsdl в Java - PullRequest
0 голосов
/ 29 июня 2010

Я работаю над плагином Eclipse, который будет иметь мастера. Этот мастер будет доступен в виде примера из контекстного меню, если щелкнуть правой кнопкой мыши редактор Java.

Мастер будет отвечать за сбор такой информации как:

  • расположение файла WSDL
  • Имя пакета

Когда мастер завершит работу, я бы хотел, чтобы заглушка веб-сервиса, описанного в WSDL, была сгенерирована в предоставленный ранее пакет.

ВОПРОС: Как я могу генерировать заглушку веб-сервиса виртуально и из исходного кода (не из командной строки) и добавить его в текущий проект?

До сих пор я сталкивался с 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)

Ответы [ 3 ]

0 голосов
/ 29 июня 2010

Кажется, вы сделали ошибку при настройке среды для плагина. Проверьте этот список для деталей. Если ошибка не исчезнет, ​​попробуйте определить фактический путь к классу с помощью System.getProperty("java.class.path"). Если jar действительно находится на пути к классам, проблема может заключаться в самом Eclipse.

0 голосов
/ 14 декабря 2012

У меня была такая же проблема. наткнулся на этот вопрос в переполнении стека. Проблема была решена, как только я возобновил затмение.

Проблема возникла из-за того, что jar-файлы Apache CXF не были установлены в eclipse. Однажды домашний путь CXF установлен в затмении. Eclipse нужно перезапустить, чтобы взять банки. Надеюсь, это полезно для тех, кто сталкивается с той же проблемой

0 голосов
/ 29 июня 2010

Похоже, что cxf-tools не в вашем Classpath.

Я не уверен, как он работает с плагинами Eclipse и OSGi, и как именно указать путь к классу для вашего плагина, но вы должны быть в состоянии указать, где находятся JAR CXF на пути к классам.

...