Java Service.create方法之间的差异

Java Service.create方法之间的差异,java,web-services,service,wsdl,Java,Web Services,Service,Wsdl,我正在使用包装SOAP服务的第三方库 它使用以下成语 String url = SOME_URL QName SERVICE_NAME = new QName("http://www.example.com/Webapp/1", "WS") QName PORT_NAME = new QName("http://www.example.com/Webapp/1", "WSPort") Service service = Service.create(SERVICE_NAME) service.a

我正在使用包装SOAP服务的第三方库

它使用以下成语

String url = SOME_URL
QName SERVICE_NAME = new QName("http://www.example.com/Webapp/1", "WS")
QName PORT_NAME = new QName("http://www.example.com/Webapp/1", "WSPort")
Service service = Service.create(SERVICE_NAME)
service.addPort(PORT_NAME, "http://schemas.xmlsoap.org/wsdl/soap/http", url)
SomeWebService port = service.getPort(SomeWebService.class)
这不起作用,我得到以下错误

WSDL Metadata not available to create the proxy, either Service instance or ServiceEndpointInterface
但是,如果我稍微改变习惯用法,在服务创建中使用URL

String url = SOME_URL
QName SERVICE_NAME = new QName("http://www.example.com/Webapp/1", "WS")
QName PORT_NAME = new QName("http://www.example.com/Webapp/1", "WSPort")
Service service = Service.create(new URL(url), SERVICE_NAME)
SomeWebService port = service.getPort(SomeWebService.class)

那么它工作得很好。不幸的是,这是一个第三方jar,我只知道这是由于反编译。我是否可能有一个不好的依赖jar版本?其他人似乎也有同样的问题,但他们能够做出上述改变。我不是。

这个问题似乎是因为我使用的第三方jar是针对Java 1.5编写的,Java 1.5不包含自己的CXF、JAXB等版本。在pom文件中重写这些版本,使用Java 1.5中可用的版本解决了这个问题