道歉,我已经扫描了许多类似的问题,但没有人帮助过我。
我正在运行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]]
我在AndroidManifest.xml中:
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="27"/>
我有:编译SDK版本:API 26:Android 8.0(奥利奥)
我该如何解决这个问题?
我认为&#34; java.util.Base64&#34;是标准Java库的一部分,至少对于我使用的版本而言,所以我不需要做任何特殊的事情来使用它。我对Gradle一无所知,但我知道我正在使用它。
答案 0 :(得分:8)
你试过android.util.Base64吗? android没有使用openjdk或oracle jre,所以标准软件包可能不存在。
答案 1 :(得分:0)
只需更换
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