2009-02-23 68 views
1

我正在阅读新的Java Web Services: Up and Running书中的第一个示例。我尝试通过第13页的SOAP客户端Java示例,但在Groovy中。无法从Groovy调用Web服务

因此,这里是我的Groovy shell代码:

import javax.xml.namespace.QName 
import javax.xml.ws.Service 
import java.net.URL 

url = new URL("http://someURL?wsdl") 
qname = new QName("http://someURL", "SomeURLImplService") 
service = Service.create(url, qname) 

但这种失败,此错误:

ERROR groovy.lang.MissingMethodException: No signature of method: \ 
static javax.xml.ws.Service.create() is applicable for argument types: \ 
(java.net.URL, javax.xml.namespace.QName) values: {http://someURL?wsdl, \ 
{http://someURL}SomeURLImplService} 

我不明白这一点,因为Groovy的告诉我,这个方法与签名确实存在:

groovy:000> Service.class.getMethods().each {println it} 
public static javax.xml.ws.Service \ 
javax.xml.ws.Service.create(java.net.URL,javax.xml.namespace.QName) 
... 

有人知道我在做什么错吗?

回答

2

我试图运行你的代码没有任何修改,它为我工作得很好。您的问题可能与Java版本或类路径有关。 javax.xml.ws(JAX-WS)只是从Java 6开始的Java SE的一部分。如果您未在Java 6中运行此测试,那可能是您的问题。这可能不是你的问题,因为如果你不是,我不希望你能够解决这些接口。

可能的另一件事是类路径问题。外部JAX-WS提供程序可以插入Java运行时。您的类路径中是否有JAX-WS提供程序?也许这是一个较早的版本。

+0

它也适用于我。 – chanwit 2009-02-24 16:39:36

1

我再次尝试通过手动下载Groovy(而不是使用Ubuntu附带的发行版)。现在它可以工作。去搞清楚。