问题背景:在编写文件下载时候,需要解决中文文件名乱码问题,不同的浏览器需要不同的编解码方法,在对火狐浏览器进行编解码时,需要用到Base64Encoder方法,此时尽管会报错,但是并没有导包的选项。
解决方法:
此处提供两种解决方法,JDK版本在9以后,包括9推荐使用第二种方法。
第一种方法:
第一步:选中自己的项目右键build path->Configure Build Path。
.第二步:选择java bulid pat->Libraries->点击打开JRE System Library---->选择 Acces rules ,点击edit。
第三步:点击Add->弹出新窗口Add Access Rule 中的Resolution中->徐只能择Acceessible,在rule pattern中输入**即可。最后点击ok,apply即可。
如果第一种方法没有效果,则可以使用第二种方法。
第二种方法:直接代替。
Base64Encoder方法替换为Encoder方法即可。此处需要导入两个包。
至于Base64Encoder为什么不能够自动导入,可能是因为sun.misc.BASE64Decoder 现在是已经过期的包,此包为以前sun公司的内部包,如今java从sun换到oracle公司所引起。
同样不仅Base64Encoder并不能正常使用,同时Base64Decoder也如此。
直接用 java.util.Base64.Encoder 和 java.util.Base64.Decoder 替代使用。