首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为JAX-WS库正确地从JDK-8迁移到JDK-11

为JAX-WS库正确地从JDK-8迁移到JDK-11
EN

Stack Overflow用户
提问于 2021-09-24 10:15:21
回答 1查看 1.6K关注 0票数 1

我正在几个缺陷管理系统之间开发几个集成(作为Maven项目),其中一个通过WSDL公开服务,迫使我通过WS使用它们。对于后者,我成功地为JDK-8开发了代码,一切都正常。

我现在正处于从8到11的JDK迁移过程中,需要更新使用WS的集成。我知道在Java 11中,一些EE库(包括JAX)被删除了。然后,为了解决这个问题,我浏览了Web,但是经过几天的测试和剪贴,我仍然有同样的问题:无法实例化WS以与最终服务器交互(即CA SDM 14.1)。

目前,我有以下错误:

代码语言:javascript
复制
java.lang.NoSuchMethodException: com.sun.xml.bind.v2.model.nav.ReflectionNavigator.getInstance()

我的POM文件是这样的:

代码语言:javascript
复制
<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类(这是第一次):

代码语言:javascript
复制
<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那样工作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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的链接。詹姆斯

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69313325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档