java 9 中 javax.activation 包的替代品是什么?
What is the replacement for javax.activation package in java 9?
似乎 javax.activation
包在 Java 9 中被弃用了。
Oracle 迁移指南建议在 JVM 启动期间使用 --add-modules java.activation
选项。
但是,我想避免这种情况并替换 javax.activation
包的 类,因为它已被弃用,将在未来的 java 版本中删除。我想,javax.activation
应该有某种替代方案。如果有的话是什么?
JavaBeans Activation Framework (JAF) 可能是您正在寻找现有软件包的替代方案。
This standalone release of JAF uses a Java Platform Module System
automatic module name of java.activation
, to match the module name
used in JDK 9. A future version will include full module metadata.
通过 upgradeable modules 的概念,仅支持模块化形式的独立 API。使用它们,可以在任何阶段(即编译时、构建时或运行时)使用来自更高版本的该模块的版本。
当前 available version 是 1.2.0
可以像这样使用:
Maven
<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" />
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
.
如上所述,java 版本 > 8 未提供 javax.activation。我在从事骆驼项目时遇到了这个例外。我刚刚添加了以下依赖项:
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
我在我的项目中使用了模块配置,所以这个问题已经通过在 module-info.java
文件中添加 requires java.activation
简单地解决了。
2020 年更新
下次更名
(由于某些合法 issues, javax.*
become renamed to jakarta.*
. So the current 1.2.2+ version of 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>
或
<dependency>
<groupId>com.sun.activation</groupId>
<artifactId>javax.activation</artifactId>
<version>1.2.2</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>
我必须在 Liferay 7.1 中发送邮件,所以我添加了这样的依赖项
编译'javax.mail:mail:1.4.7'
似乎 javax.activation
包在 Java 9 中被弃用了。
Oracle 迁移指南建议在 JVM 启动期间使用 --add-modules java.activation
选项。
但是,我想避免这种情况并替换 javax.activation
包的 类,因为它已被弃用,将在未来的 java 版本中删除。我想,javax.activation
应该有某种替代方案。如果有的话是什么?
JavaBeans Activation Framework (JAF) 可能是您正在寻找现有软件包的替代方案。
This standalone release of JAF uses a Java Platform Module System automatic module name of
java.activation
, to match the module name used in JDK 9. A future version will include full module metadata.
通过 upgradeable modules 的概念,仅支持模块化形式的独立 API。使用它们,可以在任何阶段(即编译时、构建时或运行时)使用来自更高版本的该模块的版本。
当前 available version 是 1.2.0
可以像这样使用:
Maven
<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" />
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
.
如上所述,java 版本 > 8 未提供 javax.activation。我在从事骆驼项目时遇到了这个例外。我刚刚添加了以下依赖项:
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
我在我的项目中使用了模块配置,所以这个问题已经通过在 module-info.java
文件中添加 requires java.activation
简单地解决了。
2020 年更新
下次更名
(由于某些合法 issues, javax.*
become renamed to jakarta.*
. So the current 1.2.2+ version of 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>
或
<dependency>
<groupId>com.sun.activation</groupId>
<artifactId>javax.activation</artifactId>
<version>1.2.2</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>
我必须在 Liferay 7.1 中发送邮件,所以我添加了这样的依赖项
编译'javax.mail:mail:1.4.7'