我正在阅读新Java Web Services: Up and Running书中的第一个例子。我试图在第13页上介绍Java的SOAP客户端示例,但是在Groovy中。
所以这是我的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)
...
有人知道我在这里做错了吗?
答案 0 :(得分:2)
我尝试运行您的代码而不进行任何修改,它对我来说很好。您的问题可能与Java版本或类路径有关。 javax.xml.ws(JAX-WS)只是从Java 6开始的Java SE的一部分。如果您没有在Java 6中运行此测试,那可能是您的问题。这可能不是你的问题,因为如果你不是,我不希望你能够解决这些接口。
它可能是另一件事是类路径问题。可以将外部JAX-WS提供程序插入Java运行时。你的类路径上有什么东西是JAX-WS提供者吗?也许它是早期版本。
答案 1 :(得分:1)
我通过手动下载Groovy再次尝试(而不是使用Ubuntu附带的发行版)。现在它有效。去图。