类javax.xml.ws.Service中的构造函数服务不能应用于给定类型
我已经用apache-cxf-2.7.4创建了一个web服务。 我参加了在我的项目中制作的课程。 我在项目中拥有的库包括:类javax.xml.ws.Service中的构造函数服务不能应用于给定类型,service,jax-ws,Service,Jax Ws,我已经用apache-cxf-2.7.4创建了一个web服务。 我参加了在我的项目中制作的课程。 我在项目中拥有的库包括: math3-commons-3.2.jar XStream-1.4.4.jar jaxws-api-2.2.5.jar 我有以下错误: constructor Service in class javax.xml.ws.Service cannot be applied to given types; required: java.net.URL,javax.x
- math3-commons-3.2.jar
- XStream-1.4.4.jar
- jaxws-api-2.2.5.jar
constructor Service in class javax.xml.ws.Service cannot be applied to given types;
required: java.net.URL,javax.xml.namespace.QName
found: java.net.URL,javax.xml.namespace.QName,javax.xml.ws.WebServiceFeature[]
reason: actual and formal argument lists differ in length
问题在于JAX-WSAPI的版本。应用程序的类加载器首先加载JavaSE或JavaEE中包含的版本 对于JavaSE6或JavaEE5,JAX-WSAPI2.1。施工人员: 对于JavaSE7或JavaEE6,JAX-WSAPI2.2。施工人员: 有三种可能的解决方案(取决于它是web应用程序还是独立应用程序):
-frontend jaxws21
重新运行wsdl2java
,以生成符合JAX-WS 2.1的代码如果使用Maven构建,则应将其添加到执行配置中
<defaultOptions>
<extraargs>
<extraarg>-frontend</extraarg>
<extraarg>jaxws21</extraarg>
</extraargs>
</defaultOptions>
-前端
jaxws21
(感谢Paul Vargas为我指出了正确的方向)。wsimport-help告诉我们关于-target选项的信息。它说: 根据给定的JAXWS规范版本生成代码。默认值为2.2,可接受的值为2.0、2.1和2.2 如果您使用的是JDKWSImport工具,那么只需添加如下所示的-target参数 wsimport-keep-d\myDirToStoreExtractedClientCode-target 2.1\myWSDLlocation\mineNotYours.wsdl (感谢Paul Vargas的帮助,这是一篇老文章,但仍然很有帮助。)
javax.xml.ws.Service.Service(URL, QName)
javax.xml.ws.Service.Service(URL, QName, WebServiceFeature...) // You need this!
<defaultOptions>
<extraargs>
<extraarg>-frontend</extraarg>
<extraarg>jaxws21</extraarg>
</extraargs>
</defaultOptions>