java 9中javax.activation包的替代是什么?

Dmi*_*kiy 51 java jvm javax.activation java-9

似乎javax.activation在Java 9中不推荐使用package .Oracle迁移指南建议--add-modules java.activation在JVM启动期间使用选项.

但是,我想避免这种情况并替换javax.activationpackage的类,因为它已被弃用,并将在以后的java版本中删除.我想,应该有某种替代方案javax.activation.如果有可用的话,它是什么?

Nam*_*man 54

JavaBeans Activation Framework(JAF)可能是您正在寻找现有包的替代方案.

此独立版本的JAF使用Java平台模块系统 自动模块名称java.activation,以匹配JDK 9中使用的模块名称.未来版本将包括完整模块元数据.

通过可升级模块的概念,仅以模块化形式支持独立API .使用它们,可以在任何阶段使用该模块的版本,即在编译时,构建时或运行时.


当前可用的版本因为这是1.2.0它可以这样使用:

Maven的

<dependency>
    <groupId>com.sun.activation</groupId>
    <artifactId>javax.activation</artifactId>
    <version>1.2.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

摇篮

compile 'com.sun.activation:javax.activation:1.2.0'
Run Code Online (Sandbox Code Playgroud)

常春藤

<dependency org="com.sun.activation" name="javax.activation" rev="1.2.0" />
Run Code Online (Sandbox Code Playgroud)

  • Eclipse基础已经[接管JavaEE开发](https://www.eclipse.org/ee4j/faq.php)。每个https:// wiki.eclipse.org / New_Maven_Coordinates,`javax.activation`已移至`jakarta.activation`。 (4认同)

Ala*_*man 21

JavaBeans Activiation Framework是一个独立的技术,在JCP中有自己的维护JSR并且自己下载.是的,Java SE 9已弃用它,并建议在将来的版本中删除与Java EE共享的模块,但这不会影响独立版本.独立版本将继续存在.如果你使用Maven那么这应该工作:

<dependency>
  <groupId>com.sun.activation</groupId>
  <artifactId>javax.activation</artifactId>
  <version>1.2.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

如果你正在开发一个模块,那么你可以requires java.activation.

  • 现在,有了 JakartaEE,源代码由 Eclipse 基金会托管,可以在 GitHub 上找到:https://github.com/eclipse-ee4j/jaf 和 Maven 中心:https://mvnrepository.com/artifact/com.sun .activation/jakarta.activation 将 `artifactId` 更改为 `jakarta.activation`,版本号更改为 `1.2.1` (3认同)

Ral*_*lph 9

2020 年更新

下一次重命名

(由于一些法律问题javax.*改名为jakarta.*。所以当前 1.2.2+ 版本的Jakarta Activation Framework使用名称:

  • jakarta.activation:jakarta.activation-api(代替javax.activation:javax.actication-api)或
  • com.sun.activation:jakarta.activation(相反com.sun.activation:javax.activation javax.activation:activation)和

(这个库中的包名仍然javax.activation如此,所以这个问题只是与 Maven 依赖名有关)

<dependency>
    <groupId>jakarta.activation</groupId>
    <artifactId>jakarta.activation-api</artifactId>
    <version>1.2.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

或者

<dependency>
    <groupId>com.sun.activation</groupId>
    <artifactId>javax.activation</artifactId>
    <version>1.2.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

注意:你不能既需要依赖关系,因为com.sun.activation:javax.activation包括来自班jakarta.activation:jakarta.activation-api


提示使用 Maven 执行器来保持您的项目没有这些重复项:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>3.0.0-M3</version>
    <executions>
        <execution>
            <id>enforce-lib-ban</id>
            <goals>
                <goal>enforce</goal>
            </goals>
            <configuration>
                <rules>
                    <bannedDependencies>
                        <!-- the activation framework was renamed to jarkata activation framework -->
                        <excludes>
                            <exclude>javax.activation:javax.actication-api</exclude>                        
                            <exclude>com.sun.activation:javax.activation</exclude>
                            <exclude>javax.activation:activation</exclude>
                        </excludes>
                        <message>use jakarta.activation:jakarta.activation-api or com.sun.activation:jakarta.activation instead of javax.activation</message>
                    </bannedDependencies>
<!-- if you use com.sun.activation:jakarta.activation
                    <bannedDependencies>
                        <!- - the implementation com.sun.activation:jakarta.activation contains the api classes too - ->
                        <excludes>
                            <exclude>jakarta.activation:jakarta.activation-api</exclude>
                        </excludes>
                        <message>the implementation com.sun.activation:jakarta.activation is included and it contains the api classes too</message>
                    </bannedDependencies>
-->
                </rules>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)