2009-02-23 132 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附帶的發行版)。現在它可以工作。去搞清楚。