java - java.util.Base64 未找到,无法使用 android.util.Base64,因为类是在 Android 之外使用的依赖项
问题描述
我正在进入Caused by: java.lang.ClassNotFoundException: Didn't find class "java.util.Base64" on path: DexPathList
一个 android 应用程序,并且因为 Android 和 android 之外的另一个 java 应用程序都使用了一个外部解码器类,所以我不能像很多人建议的那样使用“andorid.util.Base64”。我们如何在android中解析java.util.Base64?
我找不到其他可以尝试的方法,我看到的唯一其他答案是使用 android 类。这不是一个选择。
这是在 Android 和服务中使用的用于解压缩 Base64 中消息的共享方法。
byte[] bytes = Base64.getDecoder().decode(message.getMessage());
GZIPInputStream gzipStream = new GZIPInputStream(new ByteArrayInputStream(bytes));
final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(gzipStream, StandardCharsets.UTF_8));
final StringBuilder messageString = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
messageString.append(line);
}
messageJson = messageString.toString();
解决方案
我们通过使用 apache 库来解决这个问题,该库用于 Android 和非 Android 都可以使用的 Base64 编码/解码。
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.13</version>
</dependency>
org.apache.commons.codec.binary.Base64;
推荐阅读
- java - 获取输入并替换现有文件中的这些数据
- c# - AutoSized 文本框中的屏幕闪烁
- c++ - 将成员函数的默认实现保留在专门的模板类中
- mips - MIPS - 创建一个延迟,将 80MHz 处理器“调节”到 1Hz
- java - Spigot-API 将另一个世界放入 java 中的 World 对象
- php - 删除 OrderItem 元数据
- c++ - 如何从另一个范围访问 unistd 写入?
- php - Dropbox 链接显示我的 PHP 文件的代码,而不是执行它
- python - 有没有办法在 discord.py 的“on_raw_reaction_add”中使用“wait_for 消息”
- sql - Sql server 未在查询中使用嵌套 case 语句更新记录