Andmore的Android Package Builder构建失败,报sun/misc/BASE64Encoder错误
解决Android项目构建时的
sun/misc/BASE64Encoder错误 这个问题我之前帮朋友排查过,本质是Java版本迭代带来的API兼容性问题——sun.misc.BASE64Encoder是JDK内部的非公开API,从Java 9开始就被移除了,而你升级后的环境(Ubuntu 18.04默认可能搭载Java 9及以上版本)或者Andmore的构建组件刚好依赖了它。下面是几个可行的解决思路:
1. 替换项目中直接使用的旧BASE64 API
如果你的项目代码里直接调用了sun.misc.BASE64Encoder或BASE64Decoder,这是最根本的解决办法:
- 替换为Java 8及以上支持的标准API
java.util.Base64 - 示例替换:
- 原编码代码:
new sun.misc.BASE64Encoder().encode(yourByteArray) - 替换后:
java.util.Base64.getEncoder().encodeToString(yourByteArray) - 原解码代码:
new sun.misc.BASE64Decoder().decodeBuffer(yourBase64Str) - 替换后:
java.util.Base64.getDecoder().decode(yourBase64Str)
- 原编码代码:
- 记得在代码中导入
java.util.Base64,移除对sun.misc包的导入。
2. 切换到Java 8环境运行Eclipse/Andmore
Ubuntu 18.04默认可能安装了Java 11,而Andmore对Java 8的兼容性更好,步骤如下:
- 安装OpenJDK 8:在终端执行
sudo apt update && sudo apt install openjdk-8-jdk - 配置Eclipse项目的JRE:
- 右键项目 → Properties → Java Build Path → Libraries
- 点击Add Library → 选择JRE System Library → 点击Next
- 选择Alternate JRE,点击Installed JREs添加OpenJDK 8,设置为项目默认JRE
- 调整Java编译级别:
右键项目 → Properties → Java Compiler → 设置Compiler compliance level为1.8,勾选"Use compliance from execution environment on the 'Java Build Path'" - 配置Eclipse全局JDK:
打开Window → Preferences → Java → Installed JREs,将OpenJDK 8设为默认
3. 修复Andmore构建器的依赖问题(临时/进阶方案)
如果是Andmore自身的构建组件依赖了旧API,可以尝试:
- 更新Andmore到最新版本:打开Eclipse → Help → Eclipse Marketplace,搜索Andmore,安装最新更新包
- 临时允许JVM访问内部API(不推荐长期使用):
找到Eclipse安装目录下的eclipse.ini文件,在-vmargs下方添加一行:
保存后重启Eclipse,这个参数会让JVM开放--add-exports java.base/sun.misc=ALL-UNNAMEDsun.misc包的访问权限,但仅作为临时过渡方案,建议优先用前两种方法。
最后,记得执行Project → Clean清理项目后重新构建,确保所有配置生效。
内容的提问来源于stack exchange,提问作者user149408
相关产品推荐
相关产品推荐

