我正在查看新的 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)
...
有人知道我在这里做错了什么吗?
最佳答案
我尝试在不做任何修改的情况下运行你的代码,它对我来说工作得很好。您的问题可能与 Java 版本或类路径有关。 javax.xml.ws (JAX-WS) 只是从 Java 6 开始的 Java SE 的一部分。如果您没有在 Java 6 中运行此测试,那可能是您的问题。这可能不是您的问题,因为如果您不是,我不希望您能够解决这些接口(interface)。
另一件事可能是类路径问题。外部 JAX-WS 提供程序可以插入到 Java 运行时中。您的类路径上是否有 JAX-WS 提供程序的内容?也许这是一个早期版本。
关于java - 无法从 Groovy 调用 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578003/