使用 WSDL2Java 从 WSDL 生成的源代码在 java 11 上生成 类 with deprecated API javax xml ws
Generated sources from WSDL using WSDL2Java generates classes with deprecated API javax xml ws on java 11
在我的项目中,我使用 java11.
基于 WSDL 文件,我使用 cxf-codegen-plugin
maven 插件生成代码 类。
类 生成,在 java 11.
上使用 javax.xml.ws.*
和其他 API
示例:
其中一个生成的 类 extends Service
来自 javax.xml.ws.Service
这个库在 java 11 上没有被弃用,但是我有一个兼容性错误。
java.lang.IllegalArgumentException: JAXP09020005: The specified argument 'classpath:/schemas/wsdl' (case sensitive) for 'setRewritePrefix' is not valid.
at java.xml/javax.xml.catalog.CatalogMessages.reportIAE(CatalogMessages.java:140) ~[na:na]
at java.xml/javax.xml.catalog.BaseEntry.verifyURI(BaseEntry.java:231) ~[na:na]
at java.xml/javax.xml.catalog.RewriteSystem.setRewritePrefix(RewriteSystem.java:65) ~[na:na]
at java.xml/javax.xml.catalog.RewriteSystem.<init>(RewriteSystem.java:47) ~[na:na]
at java.xml/javax.xml.catalog.CatalogReader.startElement(CatalogReader.java:190) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:510) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:351) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2708) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:324) ~[na:na]
at java.xml/javax.xml.parsers.SAXParser.parse(SAXParser.java:276) ~[na:na]
at java.xml/javax.xml.catalog.CatalogImpl.parse(CatalogImpl.java:295) ~[na:na]
at java.xml/javax.xml.catalog.CatalogImpl.load(CatalogImpl.java:171) ~[na:na]
at java.xml/javax.xml.catalog.CatalogManager.catalog(CatalogManager.java:73) ~[na:na]
at java.xml/javax.xml.catalog.CatalogManager.catalogResolver(CatalogManager.java:119) ~[na:na]
at com.sun.xml.ws.util.xml.XmlCatalogUtil.createCatalogResolver(XmlCatalogUtil.java:125) ~[jaxws-rt-2.3.0.jar:2.3.0]
at com.sun.xml.ws.util.xml.XmlCatalogUtil.createDefaultCatalogResolver(XmlCatalogUtil.java:105) ~[jaxws-rt-2.3.0.jar:2.3.0]
... 38 common frames omitted
我怎样才能克服这个兼容性错误?
有同样的问题,请尝试将您的 cxf-codegen-plugin 更新到版本 3.3.2
我遇到了与 cxf-codegen-plugin 3.3.5
相同的问题,解决方案是使用 cxf 的依赖项而不是 com.sun.xml.ws
(或任何其他 rt)。
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.3.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.3.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.3.5</version>
</dependency>
在我的项目中,我使用 java11.
基于 WSDL 文件,我使用 cxf-codegen-plugin
maven 插件生成代码 类。
类 生成,在 java 11.
javax.xml.ws.*
和其他 API
示例:
其中一个生成的 类 extends Service
来自 javax.xml.ws.Service
这个库在 java 11 上没有被弃用,但是我有一个兼容性错误。
java.lang.IllegalArgumentException: JAXP09020005: The specified argument 'classpath:/schemas/wsdl' (case sensitive) for 'setRewritePrefix' is not valid.
at java.xml/javax.xml.catalog.CatalogMessages.reportIAE(CatalogMessages.java:140) ~[na:na]
at java.xml/javax.xml.catalog.BaseEntry.verifyURI(BaseEntry.java:231) ~[na:na]
at java.xml/javax.xml.catalog.RewriteSystem.setRewritePrefix(RewriteSystem.java:65) ~[na:na]
at java.xml/javax.xml.catalog.RewriteSystem.<init>(RewriteSystem.java:47) ~[na:na]
at java.xml/javax.xml.catalog.CatalogReader.startElement(CatalogReader.java:190) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:510) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:351) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2708) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:324) ~[na:na]
at java.xml/javax.xml.parsers.SAXParser.parse(SAXParser.java:276) ~[na:na]
at java.xml/javax.xml.catalog.CatalogImpl.parse(CatalogImpl.java:295) ~[na:na]
at java.xml/javax.xml.catalog.CatalogImpl.load(CatalogImpl.java:171) ~[na:na]
at java.xml/javax.xml.catalog.CatalogManager.catalog(CatalogManager.java:73) ~[na:na]
at java.xml/javax.xml.catalog.CatalogManager.catalogResolver(CatalogManager.java:119) ~[na:na]
at com.sun.xml.ws.util.xml.XmlCatalogUtil.createCatalogResolver(XmlCatalogUtil.java:125) ~[jaxws-rt-2.3.0.jar:2.3.0]
at com.sun.xml.ws.util.xml.XmlCatalogUtil.createDefaultCatalogResolver(XmlCatalogUtil.java:105) ~[jaxws-rt-2.3.0.jar:2.3.0]
... 38 common frames omitted
我怎样才能克服这个兼容性错误?
有同样的问题,请尝试将您的 cxf-codegen-plugin 更新到版本 3.3.2
我遇到了与 cxf-codegen-plugin 3.3.5
相同的问题,解决方案是使用 cxf 的依赖项而不是 com.sun.xml.ws
(或任何其他 rt)。
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.3.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.3.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.3.5</version>
</dependency>