Android studio:带有java.util.Base64的NoClassDefFoundError

Tim*_*per 6 android android-studio

道歉,我已经扫描了许多类似的问题,但没有人帮助过我.

我正在运行Android Studio 3.0.1,我是新手,我正在关注在线教程"HelloWorld"程序,但随后添加了对java.util.Base64.getDecoder()的调用.当我在我的实际手机(三星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]]
Run Code Online (Sandbox Code Playgroud)

我在AndroidManifest.xml中:

<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="27"/>
Run Code Online (Sandbox Code Playgroud)

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

我怎么解决这个问题?

我认为"java.util.Base64"是标准Java库的一部分,至少对于我正在使用的版本,所以我不需要做任何特殊的事情来使用它.我对Gradle一无所知,但我知道我正在使用它.

Jay*_*yen 9

你试过android.util.Base64吗?android不使用openjdk或oracle jre,因此标准软件包可能不存在.


小智 8

只需更换

import java.util.Base64;
Run Code Online (Sandbox Code Playgroud)

import android.util.Base64;
Run Code Online (Sandbox Code Playgroud)

然后将您的代码修改为如下所示(仅作为示例):

String encoded = Base64.encode(someString.getBytes(), Base64.DEFAULT)); // for encoding
String decoded = Base64.decode(encoded, Base64.DEFAULT)); // for decoding
Run Code Online (Sandbox Code Playgroud)