我正在几个缺陷管理系统之间开发几个集成(作为Maven项目),其中一个通过WSDL公开服务,迫使我通过WS使用它们。对于后者,我成功地为JDK-8开发了代码,一切都正常。
我现在正处于从8到11的JDK迁移过程中,需要更新使用WS的集成。我知道在Java 11中,一些EE库(包括JAX)被删除了。然后,为了解决这个问题,我浏览了Web,但是经过几天的测试和剪贴,我仍然有同样的问题:无法实例化WS以与最终服务器交互(即CA SDM 14.1)。
目前,我有以下错误:
java.lang.NoSuchMethodException: com.sun.xml.bind.v2.model.nav.ReflectionNavigator.getInstance()我的POM文件是这样的:
<properties>
<target.dir>target</target.dir>
<app.version>4.0.0</app.version>
<skipTests>true</skipTests>
<encoding>UTF-8</encoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<project.resources.sourceEncoding>UTF-8</project.resources.sourceEncoding>
<mainClassName>unipol.alm.integrations.FireStarter</mainClassName>
<java.version>11</java.version>
<logback.version>1.2.3</logback.version>
<lombok.version>1.18.20</lombok.version>
<json.version>20210307</json.version>
<apache.http.components.version>4.5.9</apache.http.components.version>
<derby.version>10.14.2.0</derby.version>
<junit.version>4.12</junit.version>
<cucumber.version>1.2.5</cucumber.version>
<octane.cucumber.version>12.60.48</octane.cucumber.version>
<commons.version>2.5</commons.version>
<json.simple.version>1.1.1</json.simple.version>
</properties>
<dependencies>
<!-- Logging dependencies -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>${json.version}</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>${json.simple.version}</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.8</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.19.4</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19.4</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
</dependency>
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.2</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${apache.http.components.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>${apache.http.components.version}</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>${derby.version}</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>${derby.version}</version>
</dependency>
<dependency>
<groupId>javax.xml.rpc</groupId>
<artifactId>javax.xml.rpc-api</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>com.hpe.alm.octane</groupId>
<artifactId>octane-cucumber-jvm</artifactId>
<version>${octane.cucumber.version}</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons.version}</version>
</dependency>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.4</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.hierynomus</groupId>
<artifactId>smbj</artifactId>
<version>0.10.0</version>
</dependency>
<dependency>
<groupId>commons-vfs</groupId>
<artifactId>commons-vfs</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>jcifs</groupId>
<artifactId>jcifs</artifactId>
<version>1.3.17</version>
</dependency>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.jws</groupId>
<artifactId>jsr181-api</artifactId>
<version>1.0-MR1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>rt</artifactId>
<version>2.2.10</version>
</dependency>
<dependency>
<groupId>com.sun.org.apache.xml.internal</groupId>
<artifactId>resolver</artifactId>
<version>20050927</version>
</dependency>
<dependency>
<groupId>com.sun.xml.stream.buffer</groupId>
<artifactId>streambuffer</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>policy</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>3.0.2</version>
<exclusions>
<exclusion>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>从javax.xml.ws添加的所有依赖项使JAX在JDK 11上工作(在代码通过NoClassDefFoundError提供的连续异常之后添加)。
此外,我还使用POM中的以下内容从缺陷管理系统公开的WSDL中生成了Java类(这是第一次):
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>
wsimport
</goal>
</goals>
</execution>
</executions>
<configuration>
<wsdlDirectory>${project.basedir}/src/main/resources/</wsdlDirectory>
<wsdlUrls>
<wsdlUrl>http://defect.management.system/ServiceDefinition?wsdl</wsdlUrl>
</wsdlUrls>
<packageName>com.ca.unicenterserviceplus.servicedesk</packageName>
<sourceDestDir>${project.build.directory}/generated-sources/</sourceDestDir>
</configuration>
</plugin>然后在com.ca.unicenterserviceplus.servicedesk中复制和粘贴生成的文件,应用程序将在那里找到它们。
毕竟,我的问题是:是否有办法使事情像JDK 8那样工作呢?
发布于 2021-10-01 16:33:56
在Oracle Java 11发行说明中,我发现了这个:
其他-libs➜JEP 320删除Java和CORBA模块。 从Java平台和JDK中删除Java和CORBA模块。这些模块在Java 9中被废弃,并声明打算在将来的版本(JEP 320)中删除它们。 以下模块已从Java 11和JDK 11中删除: java.xml.ws (JAXB,加上相关技术SAAJ和Web元数据) java.xml.bind (JAXB)
...etc
根据我从Oracle那里看到的,他们从Java11中删除了Jax,但是它仍然可以在OpenJDK:JEP 320:删除Java和CORBA模块下使用。根据那一页,
该建议假设希望在最新的JDK上编译或运行应用程序的开发人员可以找到并部署Java技术的替代版本。JAX和JAXB的参考实现( RIs )是一个很好的起点,因为它们是JDK 9中java.xml.ws和java.xml.bind模块的完全替代品。 com.sun.xml.ws : jaxws-ri (jaxws,外加SAAJ和Web元数据) com.sun.xml.bind : jaxb-ri (JAXB) JAX和JAXB的工具也可以作为Maven工件获得: wsgen和wsimport: com.sun.xml.ws : jaxws-tools,plus工具脚本模式和xjc: com.sun.xml.bind : jaxb-jxc和com.sun.xml.bind : jaxb-xjc,以及工具脚本。
由于您是在Java 8上,您可能仍然需要进行更多的调整和/或迁移到Java 9,但从我的角度来看,这是您前进的唯一途径。
总之,Oracle从Java 11中删除了Jax和相关技术,但是它们仍然可以下载和使用,下面是指向JAX-WS和JAXB的(RIs)的Maven repo的链接。詹姆斯
https://stackoverflow.com/questions/69313325
复制相似问题