2017-05-30 5 views
1

私は古いプロジェクトをmavenプロジェクトに変換しようとしています。しかし、プロジェクトがMavenのされたとき、それは、インポートとクラスの警告を示していますアクセス制限:タイプ 'BASE64Decoder'はAPIではありません

import sun.misc.BASE64Decoder; 
import sun.misc.BASE64Encoder; 

アクセス制限:型「BASE64Decoder」API(必要なライブラリ「C上の制限 ではありません:\プログラムファイル\のJava \ jre7 \ lib \ rt.jar ')

それで問題は何ですか?

+1

https://stackoverflow.com/questions/860187/access-restriction-on-class-due-to-restriction-on-required-library-rt-jar – sasikumar

+2

あなたは、一般的には、 'sun.misc'の依存関係です。 –

+0

Java 8には、標準Base64エンコーダ/デコーダがあります。グァバも1つ持っています。 Apacheのコモンズコーデックもあります。 –

答えて

1

すべてのsun。*およびcom.sun。*パッケージは、Javaの実装にはプライベートなものです。 Javaの今後のリリースでは、Javaを使用しているアプリケーションコードを壊す可能性があります。

対照的に、java。*、javax。*およびjavafx。*パッケージのすべてのクラスは石で設定されています。彼らの名前とパブリックメンバーは変更されず、削除されません(理論的には非推奨のものを除く)。

これは、これらのクラスがパブリックAPIの一部ではないというメッセージが表示される理由です。彼らは一般消費のためのものではありません。

Java 8では、代わりにjava.util.Base64を使用する必要があります。しかし、Java 7を使用しているようですので、代わりにDatatypeConverter.parseBase64BinaryDatatypeConverter.printBase64Binaryを使用します。

また、2017年7月にリリースされる予定のJava 9では、プログラムがsun。*クラスにアクセスすることはできません。 https://mreinhold.org/blog/jigsaw-module-systemを参照してください。

関連する問題