似乎在Java 9中不推荐使用javax.activation
包.Oracle迁移指南建议在JVM启动期间使用--add-modules java.activation
选项。
但是,我想避免这种情况并替换javax.activation
包的类,因为它已被弃用,将在未来的java版本中删除。我想,javax.activation
应该有某种替代方案。如果有可用的话,它是什么?
JavaBeans Activation Framework (JAF)可能是您正在寻找现有包装的替代品。
此独立版本的JAF使用Java平台模块系统自动模块名称
java.activation
,以匹配JDK 9中使用的模块名称。未来版本将包括完整模块元数据。
通过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>
摇篮
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。在处理camel项目时遇到了这个异常。我刚刚添加了以下依赖项:
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>