javax的替代品是什么?Java 9中的激活包?

cld4siwp  于 2023-04-28  发布在  Java
关注(0)|答案(6)|浏览(110)

javax.activation包在Java 9中被弃用。Oracle迁移指南建议在JVM启动期间使用--add-modules java.activation选项。
然而,我想避免这种情况,并替换javax.activation包的类,因为它已被弃用,并将在未来的java版本中删除。我想,应该有某种javax.activation的替代品。如果有的话,是什么?

zfciruhq

zfciruhq1#

JavaBeans Activation Framework (JAF)可能是您正在寻找的现有软件包的替代方案。
此独立版本的JAF使用Java平台模块系统*自动模块*名称java.activation,以匹配JDK 9中使用的模块名称。未来的版本将包括完整的模块元数据。
通过 * 可升级模块 * 的概念,仅支持模块化形式的独立API。使用它们,就可以在任何阶段使用该模块的后续版本,即。即在编译时、构建时或运行时。
目前可用的版本是1.2.0,可以这样使用:
玛文

<dependency>
    <groupId>com.sun.activation</groupId>
    <artifactId>javax.activation</artifactId>
    <version>1.2.0</version>
</dependency>

Gradle

compile 'com.sun.activation:javax.activation:1.2.0'

艾薇

<dependency org="com.sun.activation" name="javax.activation" rev="1.2.0" />
hs1rzwqc

hs1rzwqc2#

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>

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

nkkqxpd9

nkkqxpd93#

更新2020

  • 下一次重定目标 *

(due到一些法律的的issuesjavax.*变为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.activationjavax.activation:activation)和

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

<dependency>
    <groupId>jakarta.activation</groupId>
    <artifactId>jakarta.activation-api</artifactId>
    <version>1.2.2</version>
</dependency>

<dependency>
    <groupId>com.sun.activation</groupId>
    <artifactId>javax.activation</artifactId>
    <version>1.2.0</version>
</dependency>

注意:您不需要两个依赖项,因为com.sun.activation:javax.activation包含了jakarta.activation:jakarta.activation-api中的类

提示使用Maven enforcer使您的项目免于重复:

<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>
5kgi1eie

5kgi1eie4#

如上所述,java版本〉8不提供javax。activation.我在camel项目工作时遇到了这个例外。我刚刚添加了以下依赖项:

<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
iugsix8n

iugsix8n5#

我在我的项目中使用模块配置,所以这个问题通过将requires java.activation添加到module-info.java文件中简单地解决了。

p4rjhz4m

p4rjhz4m6#

我必须用Liferay 7发送邮件。1所以我添加了这样的依赖关系
编译'javax。电子邮件:电子邮件:1.4.7'

相关问题