我目前正在尝试将一个Java 8项目迁移到Java 12。 (希望) 最后的障碍是我们被迫使用的旧Web服务。在Java 8中使用Web服务“as is”本身并不是问题,它已经工作了多年。
wsdl声明:
<!--WSDL由Apache Axis版本创建:1.4
Built on Apr 22, 2006 -->
据我所知,新版本的WSDL2JAVA不再支持此类服务(因为它们依赖于Axis 2):
WSDLToJava错误:CXF不支持Rpc/encoded wsdls
为了使这个服务能够在Java 8和12中使用,我需要以下库:
<!-- https://mvnrepository.com/artifact/javax.xml.rpc/javax.xml.rpc-api -->
<dependency>
<groupId>javax.xml.rpc</groupId>
<artifactId>javax.xml.rpc-api</artifactId>
<version>1.1.2</version>
</dependency>
这就是问题出现的地方。该库定义了部分软件包javax.xml,由于它是Java系统路径,因此不再允许使用。有什么建议或解决方法吗?我有遗漏什么吗?
编辑:ZhekaKozlov关于必须切换到jakarta是正确的。 现在还存在一个错误,因为该项目还需要Axis2。
<!-- https://mvnrepository.com/artifact/org.apache.axis2/axis2-kernel -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-kernel</artifactId>
<version>1.7.9</version>
</dependency>
将此内容添加到新的Java 12项目中后,org.w3c.dom.*(例如Document)无法使用。
编辑2:我终于让所有的东西都正常运行了。程序正在运行,代码中没有错误剩余。不幸的是,我不能测试应用程序的Axis部分,因为它连接的服务只能从我们客户的环境中使用,因此必须进行测试。 在axis2和axis2-adb上,我都必须排除两个库:
<exclusions>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-stax-api_1.0_spec</artifactId>
</exclusion>
<exclusion>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
</exclusion>
</exclusions>
它们分别阻止了 org.w3c.dom.* 和 javax.xml.stream.*。
javax.xml.rpc
的包,它不包含javax.xml
。 - ZhekaKozlov