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

标签 java web-services wsgen

我对 java 和 web 服务都比较陌生,所以它必须是显而易见的。最有可能是与类路径有关的东西。我的类文件位于相对于当前目录的目录“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)

最佳答案

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

查看 docs ,并尝试像这样运行它:

wsgen -wsdl -classpath . service.OrderProcessService

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

关于java - 使用 wsgen 生成 JAX-WS 工件时出现 "java.lang.NoClassDefFoundError: IllegalName"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2306734/

相关文章:

java - jax-ws: "keep"工具中的 "wsgen"标志究竟有什么作用?

java - 在 Java 中通过 Web 服务下载大文件

android - 将复杂对象传递给 Web 服务

java - 等待 API 响应的 RESTTemplate

web-services - SFDC 顶点代码 : Access class level static variable from "Future" method

maven - 使用 javaee-api 版本 6 提供的范围会导致 wsgen 在 Maven 中失败

java - 使用 wsgen 时未找到类/名称错误

java - 如何在stream.map函数中编写函数接口(interface)的apply函数?

java - 如何从链表中删除素数

java - 通过Controller方法和applicationContext获取bean的区别