使用wsgen生成JAX-WS工件时出现“java.lang.NoClassDefFoundError:IllegalName”错误

时间:2010-02-21 17:40:17

标签: java web-services wsgen

我对java和webservices都比较新,所以它必须是显而易见的。最有可能是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 个答案:

答案 0 :(得分:1)

错误告诉您它需要合法的类名。你给它一个源路径。你需要看起来像一个完全限定的类名的东西(例如,“x.y.z.Foo”)。

查看docs,然后尝试按以下方式运行:

  

wsgen -wsdl -classpath。   service.OrderProcessService

我认为wsgen适用于.class文件,而不是.java。确保在运行之前编译了源文件。

答案 1 :(得分:0)

转到终端中的目标/类并运行

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