【问题标题】:Android studio: NoClassDefFoundError with java.util.Base64Android 工作室:NoClassDefFoundError 与 java.util.Base64
【发布时间】:2021-04-25 19:00:41
【问题描述】:

抱歉,我已经浏览了许多听起来相似的问题,但没有一个对我有帮助。

我正在运行 Android Studio 3.0.1,我是新手,我正在关注在线教程“HelloWorld”程序,但随后添加了对 java.util.Base64.getDecoder() 的调用。当我在我的实际手机(Samsung Galaxy S8)上运行它时,这会在运行时失败:

              java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/Base64;

               Caused by: java.lang.ClassNotFoundException: Didn't find class "java.util.Base64" on path: DexPathList[[zip file "/data/app/com.skedgo.helloworld-1/base.apk", zip file "/data/app/com.skedgo.helloworld-1/split_lib_dependencies_apk.apk", zip file "/data/app/com.skedgo.helloworld-1/split_lib_slice_0_apk.apk", zip file "/data/app/com.skedgo.helloworld-1/split_lib_slice_1_apk.apk", zip file "/data/app/com.skedgo.helloworld-1/split_lib_slice_2_apk.apk", zip file "/data/app/com.skedgo.helloworld-1/split_lib_slice_3_apk.apk", zip file "/data/app/com.skedgo.helloworld-1/split_lib_slice_4_apk.apk", zip file "/data/app/com.skedgo.helloworld-1/split_lib_slice_5_apk.apk", zip file "/data/app/com.skedgo.helloworld-1/split_lib_slice_6_apk.apk", zip file "/data/app/com.skedgo.helloworld-1/split_lib_slice_7_apk.apk", zip file "/data/app/com.skedgo.helloworld-1/split_lib_slice_8_apk.apk", zip file "/data/app/com.skedgo.helloworld-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.skedgo.helloworld-1/lib/arm64, /system/lib64, /vendor/lib64]]

我在 AndroidManifest.xml 中有:

<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="27"/>

我有:编译 SDK 版本:API 26:Android 8.0 (Oreo)

我该如何解决这个问题?

我相信“java.util.Base64”是标准 Java 库的一部分,至少对于我正在使用的版本来说,所以我不需要做任何特别的事情来使用它。我对 Gradle 一无所知,但我知道我正在使用它。

【问题讨论】:

    标签: android android-studio


    【解决方案1】:

    java.util.Base64 替换为android.util.Base64。 android 不使用 openjdk 或 oracle jre,所以标准包可能不存在。

    【讨论】:

    • 怎么改?
    • 你想改变什么?
    • 如何将 Android API 23 的 Ljava.Base64 更改为 android.util.Base64?
    • 搜索和替换?我不确定我是否理解这个问题。 android.util.Base64 从 API 级别 8 开始就存在。java.util.Base64 不在 android 运行时中。
    【解决方案2】:

    只需替换

    import java.util.Base64;
    

    import android.util.Base64;
    

    然后将你的代码修改成这样(只是一个例子):

    String encoded = Base64.encode(someString.getBytes(), Base64.DEFAULT)); // for encoding
    String decoded = Base64.decode(encoded, Base64.DEFAULT)); // for decoding
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 2015-10-05
      • 2020-11-13
      • 2017-07-21
      • 2020-06-16
      • 2016-04-05
      • 1970-01-01
      相关资源
      最近更新 更多