嗨,我有一个完美的项目。
我正在使用apache cxf
,生成的客户端代码运行正常。
然而,从昨天开始我下载了WSDL和XSD的新版本,但似乎失败了。
我的插件pom.xml条目如下:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>2.7.3</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${basedir}/src/main/java</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>
${basedir}/src/interface.wsdl
</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
我得到的错误如下:
javax.xml.bind.JAXBException: trans is not a valid property on class org.test.GetCons
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getElementPropertyAccessor(JAXBContextImpl.java:934) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.db.glassfish.JAXBRIContextWrapper.getElementPropertyAccessor(JAXBRIContextWrapper.java:106) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.client.sei.BodyBuilder$DocLit.<init>(BodyBuilder.java:227) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.client.sei.StubHandler.<init>(StubHandler.java:117) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.db.DatabindingImpl.initStubHandlers(DatabindingImpl.java:145) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.db.DatabindingImpl.<init>(DatabindingImpl.java:90) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.db.DatabindingProviderImpl.create(DatabindingProviderImpl.java:59) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.db.DatabindingProviderImpl.create(DatabindingProviderImpl.java:43) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.db.DatabindingFactoryImpl.createRuntime(DatabindingFactoryImpl.java:105) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.client.WSServiceDelegate.buildRuntimeModel(WSServiceDelegate.java:875) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.client.WSServiceDelegate.createSEIPortInfo(WSServiceDelegate.java:892) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.client.WSServiceDelegate.addSEI(WSServiceDelegate.java:855) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:435) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:404) ~[na:1.8.0_60]
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:386) ~[na:1.8.0_60]
at javax.xml.ws.Service.getPort(Service.java:119) ~[na:1.8.0_60]
我无法上传wsdl和xsd文件,因为它们是保密的。
我注意到一个变化如下:
工作定义创建了一个java注释,如:
* <element name="trans" type="{http://server/}trans" minOccurs="0"/>
现在破碎的人做了以下事情:
* <element name="trans" type="{http://server/}trans" minOccurs="0" form="qualified"/>
答案 0 :(得分:1)
检查你的GetCons类,特别是它的'trans'字段。
是否可以使用@XmlTransient进行注释?或者类似性质的问题,要解组的xml与生成的类不匹配(我猜xml包含<trans>...</trans>
元素)
您的案例与this one类似。
根据问题更新进行更新:
我认为你的字段trans的xml没有命名空间或正确的命名空间。
“qualified”表示目标命名空间中的属性必须使用命名空间前缀
进行限定