首页 > 解决方案 > 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();

标签: javaandroidbase64

解决方案


我们通过使用 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;

推荐阅读