web-dev-qa-db-ja.com

Java 9のjavax.activationパッケージの代替は何ですか?

javax.activationパッケージはJavaで非推奨のようです。9。Oracle移行ガイドでは、JVMの起動時に--add-modules Java.activationオプションを使用することを提案しています。

ただし、これは非推奨であり、将来のJavaバージョンで削除されるため、これを回避し、javax.activationパッケージのクラスを置き換えたいと思います。 javax.activationには何らかの代替手段があるはずです。利用可能なものがある場合、それは何ですか?

46

JavaBeans Activation Framework(JAF) は、おそらく既存のパッケージの代替案です。

JAFのこのスタンドアロンリリースは、Javaプラットフォームモジュールシステムを使用しますautomatic module name of 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>

Gradle

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

Ivy

<dependency org="com.Sun.activation" name="javax.activation" rev="1.2.0" />
48
Naman

JavaBeansアクティベーションフレームワークは、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を実行できます。

20
Alan Bateman

上記のように、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>
1
Michal Cz