項目使用 sun.misc.BASE64Encoder 進行 Base64 編碼,JDK 1.8 編譯報錯找不到類,添加 JRE System Library 暫時可行但不久後失效,導入 JDK 1.6 rt.jar 導致啟動卡死。
sun.misc.BASE64Encoder 屬於 **JDK 內部非公共 API**,JDK 9+ 模組化後默認封裝不導出,JDK 8 雖可通過 -Xbootclasspath 或 IDE 設置訪問,但極不穩定,不建議生產使用。
java.util.Base64 (推薦):// 編碼
String encoded = Base64.getEncoder().encodeToString(bytes);
// 解碼
byte[] decoded = Base64.getDecoder().decode(encodedStr);
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
// 使用
String encoded = Base64.encodeBase64String(bytes);
--add-exports java.base/sun.misc=ALL-UNNAMED (JDK 9+),但屬臨時妥協。徹底替換為 java.util.Base64 或 Commons Codec,避免依賴內部 API,保證跨 JDK 版本穩定運行。