在 Eclipse 專案中使用 sun.misc.BASE64Decoder 或 BASE64Encoder 時,編譯器報錯:
Access restriction: The constructor BASE64Decoder() is not accessible due to restriction on required library
原因在於 JDK 的 rt.jar 中 sun.* 套件預設受存取限制,Eclipse 預設禁止專案直接引用這些內部 API。
重新加入 JRE System Library 會重置 Eclipse 對該庫的存取規則,移除對 sun.* 套件的預設禁止設定。此為 Eclipse 特有的編譯時檢查機制,運行時不受影響。
避免直接依賴 sun.misc.* 內部類,改用標準 API 或成熟庫:
java.util.Base64 (標準庫,效能更好)。org.apache.commons.codec.binary.Base64。com.google.common.io.BaseEncoding。範例 (Java 8):
// 編碼
String encoded = Base64.getEncoder().encodeToString("原文".getBytes(StandardCharsets.UTF_8));
// 解碼
byte[] decoded = Base64.getDecoder().decode(encoded);