类路径问题中的apache cxf和wsdl

时间:2016-10-18 11:36:36

标签: java-ee cxf

我使用以下命令

创建了一项服务
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将其视为关键字?

1 个答案:

答案 0 :(得分:0)

  

这里有什么问题?

似乎WSDL文件不在服务器的类路径中。当wsdl文件位于生成的jar文件中时,将使用类路径协议。将res文件夹放入构建路径可能还不够。 wsdl目录必须位于运行时类路径上(或者在生成的jar内部构建)。

启动服务器时,您可以(选择其中一个选项):

  1. 添加一个poido到您的res目录的类路径参数
  2. 使用相对文件路径而不是类路径协议
  3. 构建jar文件时,请包含wsdl文件夹
  4.   

    其中一个包名包含关键字interface,因此会包含   不编译

    确实,"界面"是保留字,将被视为保留字。您可以强制命名空间或服务名称的自定义程序包名称或类名。