在涉及到圖片持久化的時候會遇到這個編碼類---sun.misc.BASE64Encoder
這個類在jdk1.6之前是可以使用的,但在1.6之後提出警告,並在jdk9.0之後完全刪除。
“網上有辦法說重新配置jre就行了,但事實上不是這麼簡單的,測試後發現,這是要看配置的jre的類型是execution environment(執行環境),還是alternate jre(替代jre)
這兩種方法中,如果是第一種就不行,因爲是執行環境,也就是不會含JDK的一些額外類,rt.jar中的很多包都會因爲jre與jdk權限不同而導致被限定權限,其中就包含了sun包。
如果是第二種方法,即JDK替代jre,這就沒問題,因爲使用的是jdk的權限,所以不會報這類的錯誤。
事實上,這兩個方法都是sun公司的內部方法,並沒有在java api中公開過,所以使用這些方法是不安全的,將來隨時可能會從中去除,所以相應的應該使用替代的對象及方法。”
那該怎麼辦?
其實這個類被刪是因爲:
之前base64加密用的是sun公司的sun.misc.BASE64Encoder/BASE64Decoder,由於後面版本更新,sun公司被oracle公司收購,加密類BASE64Encoder被org.apache.commons.codec.binary.Base64替代了。
所以以後用org.apache.commons.codec.binary.Base64加密解密!
對應的加密解密方法名稱會變,但那個簡單,網上搜一下之前加密解密的方法名對應現在的加密解密方法就ok了。
maven:
<dependency> <groupId>org.apache.directory.studio</groupId> <artifactId>org.apache.commons.codec</artifactId> <version>1.8</version> </dependency>