一直以来Base64算法的加密解密都是使用sun.misc包下的BASE64Encoder及BASE64Decoder来进行的。但是这个类是sun公司的内部方法,并没有在Java API中公开过,不属于JDK标准库范畴,但在JDK中包含了该类,可以直接使用。但是在Eclipse和MyEclipse中直接使用,却找不到该类。
问题描述如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/14f5205f47c7ef29bf1aec69db2e815f.png)
解决方案:
第一步:在使用sun.misc包下的API的项目上右键选择Build Path,选择Configure Build Path
![](https://i-blog.csdnimg.cn/blog_migrate/b03b915ba121dd3fa985f0248fb29f34.png)
第二步:在Java Build Path窗口,点击第三个选项卡Libraries,选择JRE System Libraries,选择第一项Access rules,点击Edit
![](https://i-blog.csdnimg.cn/blog_migrate/cc5fd2be820a36b48338f179be872d34.png)
第三步:在弹出的窗口中点击Add
![](https://i-blog.csdnimg.cn/blog_migrate/eb8d4e121e43d8d219f2b8efed95d90a.png)
第四步:在Resolution后面选择Accessible选项,下面的Rule Pattern配置为**,点击OK即可。
![](https://i-blog.csdnimg.cn/blog_migrate/2094ffd52d6e7c52a35e465e5a285e58.png)
第五步:点击OK
![](https://i-blog.csdnimg.cn/blog_migrate/4b310398a569f9cb22281c86efb7c4c4.png)
第六步:点击Apply,点击OK,就会看到工作空间会进行重新导入构建。
![](https://i-blog.csdnimg.cn/blog_migrate/3f577c21fac9f61d8ed5c01577bd2076.png)
我们再来看导入sun.misc包下的BASE64Encoder这个类,完美解决。
![](https://i-blog.csdnimg.cn/blog_migrate/d42b5f5c3d66a0e8e45f49bb8ba8c06a.png)
其余解决方案:
也可以使用第三方提供的相应的替代的API
Apache提供的Commons Codec,简称CC
Bouncy Castle提供的Bouncy Castle,简称BC
build.gradle加入第三方依赖:
使用Gradle刷新之后: