Ошибка «java.lang.NoClassDefFoundError: IllegalName» при создании артефактов JAX-WS с использованием wsgen - PullRequest
1 голос
/ 21 февраля 2010

Я относительно новичок как в Java, так и в веб-сервисах, поэтому это должно быть что-то очевидное. Скорее всего, что-то с classpath. Мои файлы классов находятся в каталоге 'src / ibmwebservicetutorial / service /' относительно текущего каталога. Есть идеи, что я делаю не так?

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)

Ответы [ 2 ]

1 голос
/ 21 февраля 2010

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

Проверьте документы и попробуйте запустить его так:

wsgen -wsdl -classpath. service.OrderProcessService

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

0 голосов
/ 19 августа 2013

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

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