Java9 不推荐包含Java的六个模块 --它们很快就变成了将被移除:
javax.activationjavax.activity、javax.rmi、javax.rmi.CORBA和org.omg.*包javax.transactionjavax.xml.bind.*javax.jws、javax.jws.soap、javax.xml.soap和所有javax.xml.ws.*包javax.annotation哪些维护了第三方构件提供了这些API?不管他们提供的API有多好,或者他们必须提供哪些其他特性--重要的是,它们是替代这些模块/包的替代品吗?
为了更容易地收集知识,我用我目前所知道的来回答,并将这个答案变成了一个社区wiki。我希望人们能扩展它,而不是写他们自己的答案。
在投票结束之前:
发布于 2018-01-11 09:55:25
不要使用不推荐使用的Java模块,而是使用以下构件。
JAF (java.activation)
JavaBeans激活框架(现在的雅加达激活)是一种独立的技术(可在Maven Central上获得):
<dependency>
<groupId>com.sun.activation</groupId>
<artifactId>jakarta.activation</artifactId>
<version>1.2.2</version>
</dependency>(来源)
CORBA (java.corba)
来自9月320
除非第三方接管CORBA、ORB实现、CosNaming提供者等的维护,否则就不会有独立的CORBA版本。第三方维护是可能的,因为Java平台认可了CORBA的独立实现。相反,RMI的API仅在Java中定义和实现。除非一个专用的JSR开始维护它,或者API的管理工作由Eclipse接管,否则不会有一个独立版本的RMI( Java从JCP到Eclipse的管理过程包括GlassFish及其实现的和RMI)。
JTA (java.transaction)
独立版本:
<dependency>
<groupId>jakarta.transaction</groupId>
<artifactId>jakarta.transaction-api</artifactId>
<version>1.3.3</version>
</dependency>(来源)
JAXB (java.xml.bind)
由于Java 被重新命名为Jakarta ,JAXB现在由新的构件提供:
<!-- API -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.3</version>
</dependency>
<!-- Runtime -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.3</version>
<scope>runtime</scope>
</dependency>
<!-- Alternative runtime -->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
<scope>runtime</scope>
</dependency>另一种运行时是由Abhijit Sarkar抚养。
schemagen和xjc也可以作为独立JAXB发行版的一部分从那里下载。
另见链接答案。
JAX (java.xml.ws)
参考执行情况:
<!-- API -->
<dependency>
<groupId>jakarta.xml.ws</groupId>
<artifactId>jakarta.xml.ws-api</artifactId>
<version>2.3.3</version>
</dependency>
<!-- Runtime -->
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.3.3</version>
</dependency>独立发行版下载 (包含wsgen和wsimport)。
公共注释(java.xml.ws.annotation)
Java共用批注 (可在Maven Central获得):
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>1.3.5</version>
</dependency>(来源)
发布于 2018-01-16 10:25:24
JAXB (java.xml.bind) for JDK9
在jdk9 9/10 EA上的桌面应用程序中完美地工作
<properties>
<jaxb-api.version>2.3.0</jaxb-api.version>
</properties>
<!-- JAXB 2.3.0 for jdk9+ -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb-api.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>${jaxb-api.version}</version>
</dependency>
<!-- JAXB needs javax.activation module (jdk9) -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>javax.activation-api</artifactId>
<version>1.2.0</version>
</dependency>发布于 2018-09-07 11:07:05
我需要将JAXB (java.xml.ws)和JAXB (java.xml.bind)替换为基于Spring 2的应用程序,最后得到了这些JAX (Gradle构建):
// replacements for deprecated JDK module java.xml.ws
runtimeOnly 'javax.xml.ws:jaxws-api:2.3.0' // javax.xml.ws.* classes
runtimeOnly 'javax.jws:jsr181-api:1.0-MR1' // for javax.jws.* classes
// replacement for deprecated JDK module java.xml.bind
runtimeOnly 'javax.xml.bind:jaxb-api'
runtimeOnly 'org.glassfish.jaxb:jaxb-runtime:2.3.0.1'
runtimeOnly 'org.glassfish:javax.json:1.1.2'
runtimeOnly 'org.eclipse:yasson:1.0.1'(您可能需要compile或其他范围,runtimeOnly对我们来说就足够了。)
我注意到https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-core被描述为“旧”,使用这个答案用于基于org.glassfish的东西,这也带来了org.eclipse.yasson。
现在这真的很混乱,很管用,但是怎么才能确定它是最好的替代品,对吗?
https://stackoverflow.com/questions/48204141
复制相似问题