You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入Eclipse时sun.misc.BASE64Decoder/Encoder无法解析的问题求助

解决sun.misc.BASE64Decoder/Encoder导入报错的方案

sun.misc包下的BASE64相关类是Oracle JDK的内部非标准API,从Java 9开始被官方移除/限制访问,所以导入Eclipse后会出现无法解析的错误,仅转警告通常无法解决编译或运行问题,给你几个可行的解决办法:

一、替换为JDK标准BASE64类(推荐)

Java 8及以上版本提供了java.util.Base64这个标准类,完全可以替代sun.misc的实现,且跨JDK版本兼容,代码替换示例:

解码替换

原代码:

import sun.misc.BASE64Decoder;
// ...
byte[] bytes = new BASE64Decoder().decodeBuffer(base64Str);

替换为:

import java.util.Base64;
// ...
byte[] bytes = Base64.getDecoder().decode(base64Str);

编码替换

原代码:

import sun.misc.BASE64Encoder;
// ...
String base64Str = new BASE64Encoder().encodeBuffer(byteArray);

替换为(无需换行的情况):

import java.util.Base64;
// ...
String base64Str = Base64.getEncoder().encodeToString(byteArray);

如果需要和原encodeBuffer一致的带换行MIME格式编码:

String base64Str = Base64.getMimeEncoder().encodeToString(byteArray);

二、强制让Eclipse允许访问sun.misc类(仅适用于Oracle JDK 8)

如果必须保留原有代码,只能依赖Oracle JDK 8(Java 9+彻底移除了这些类),并按以下步骤设置:

  • 右键项目 → Properties → Java Build Path → Libraries,将JRE System Library切换为Oracle JDK 8;
  • 同样在项目Properties里,进入Java Compiler → Errors/Warnings,找到Deprecated and restricted API,把Forbidden reference (access rules)改为Warning或Ignore;
  • 再回到Java Build Path的Libraries,展开JRE System Library,右键Access Rules → Add,设置Resolution为Accessible,Pattern为sun/misc/**,点击确定保存。

三、使用第三方BASE64库

比如Apache Commons Codec的Base64类,步骤如下:

  1. 下载Apache Commons Codec的jar包,添加到项目的Build Path中;
  2. 替换代码:
import org.apache.commons.codec.binary.Base64;
// 解码
byte[] bytes = Base64.decodeBase64(base64Str);
// 编码
String base64Str = Base64.encodeBase64String(byteArray);

内容的提问来源于stack exchange,提问作者Harsh Paradkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 03:12:49