2010-02-21 2 views
1

Я относительно новичок и для java, и для webservices, поэтому это должно быть что-то очевидное. Скорее всего, что-то с classpath. Мои файлы классов находятся в каталоге 'src/ibmwebserviceetutorial/service /' относительно текущего каталога. Любая идея, что я делаю неправильно?Ошибка «java.lang.NoClassDefFoundError: IllegalName» при создании артефактов JAX-WS с использованием wsgen

wsgen -classpath . src/ibmwebservicetutorial/service/OrderProcessService -wsdl 

Exception in thread "main" java.lang.NoClassDefFoundError: IllegalName: src/ibmwebservicetutorial/service/OrderProcessService 
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:477) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:56) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:195) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
at com.sun.tools.internal.ws.wscompile.WsgenOptions.getClass(WsgenOptions.java:276) 
at com.sun.tools.internal.ws.wscompile.WsgenOptions.validateEndpointClass(WsgenOptions.java:212) 
at com.sun.tools.internal.ws.wscompile.WsgenOptions.validate(WsgenOptions.java:203) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:105) 
at com.sun.tools.internal.ws.WsGen.main(WsGen.java:41) 

ответ

1

Ошибка заключается в том, что она требует названия юридического класса. Вы дали ему исходный путь. Вам нужно что-то похожее на полное имя класса (например, «x.y.z.Foo»).

Отъезд docs и попробуйте запустить его так:

wsgen -wsdl -classpath . service.OrderProcessService

Я думаю wsgen работает на .class файлов, а не .java. Перед запуском убедитесь, что вы скомпилировали исходные файлы.

+0

Yup я скомпилировать файлы и файлы классов находятся в том же каталоге, что и .java файлов. – NewbieToJava

+0

Теперь я уверен, что я даю ему правильный путь. Потому что, если я даю неверный путь, я получаю следующее: Класс не найден: «service/OrderProcessService» Использование: WSGEN [опции] NewbieToJava

+0

Ooooppss! Я пропустил очевидное. Я использовал/понял. в пути к файлу класса. – NewbieToJava

0

Перейти к целевой/классы в терминале и запускать

wsgen -verbose -keep -cp . com.your.package.name.OrderProcessServiceImpl