我使用以下命令
创建了一项服务wsdl2java -ant -impl -wsdlLocation classpath:wsdl/Interface.wsdl -server -d serverclasses Interface.wsdl
我创建了一个文件夹res / wsdl并将Interface.wsdl放在那里。我将res文件夹添加到构建路径。
然而,当我运行该项目时,它失败了:
Exception in thread "main" com.sun.xml.internal.ws.server.ServerRtException: [failed to localize] cannot.load.wsdl(classpath:wsdl/Interface.wsdl)
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.getPrimaryWsdl(Unknown Source)
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.createEndpoint(Unknown Source)
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(Unknown Source)
这是什么问题?处理这个问题的最佳方法是什么?注意我使用命令行从wsdl创建java类。
在旁注中,其中一个包名称包含关键字interface,因此不会编译。有没有办法告诉java将其视为关键字?
答案 0 :(得分:0)
这里有什么问题?
似乎WSDL文件不在服务器的类路径中。当wsdl文件位于生成的jar文件中时,将使用类路径协议。将res文件夹放入构建路径可能还不够。 wsdl目录必须位于运行时类路径上(或者在生成的jar内部构建)。
启动服务器时,您可以(选择其中一个选项):
其中一个包名包含关键字interface,因此会包含 不编译
确实,"界面"是保留字,将被视为保留字。您可以强制命名空间或服务名称的自定义程序包名称或类名。