尽管使用了android.util.Base64,但出现“找不到类“ java.util.Base64””错误

时间:2019-11-06 06:34:08

标签: java android

就像在问题中一样,我在使用Base64时遇到问题,不断出现错误

Failed resolution of: Ljava/util/Base64;

Didn't find class "java.util.Base64" on path:
DexPathList[[zip file "/data/app/com.app/base.apk"],
nativeLibraryDirectories=[/data/app/com.app/lib/x86,
/data/app/com.app/base.apk!/lib/x86,
/system/lib,
/vendor/lib]]

有导入

import android.util.Base64;

以及使用Base64的唯一代码

Log.d("appname", "BUFFER UTF8: " + Base64.decode(data, Base64.DEFAULT));

String signature = generator.sign(keyFile, Base64.decode(data, Base64.DEFAULT));
Log.d("appname", "Signature " + signature);

有什么主意吗?

更新。

在我的课堂上使用java.util.Base64找到了一个导入的第三方库。 Idk接下来我该怎么做

2 个答案:

答案 0 :(得分:0)

您要导入android的Base64,请检查rimport语句。 像这样更改代码:-

Log.d("appname", "BUFFER UTF8: " + Base64.decode(data, Base64.NO_WRAP));
String signature = generator.sign(keyFile, Base64.decode(data, Base64.NO_WRAP));
Log.d("appname", "Signature " + signature);

答案 1 :(得分:0)

您很可能在其他类中使用java.util.Base64,或者您正在使用使用该类的第三方Java库。

所以:

  1. 在您的整个源代码库中搜索导入的java.util.Base64。如果找到一个,请修复它。

  2. 再次检查logcat,看看它是否告诉您所依赖的类是错误的java.util.Base64类。

  3. 如果以前的方法不能帮助您找到问题的根源,则可以尝试从项目的依赖关系树中的JAR中提取所有.class文件,并通过{{1 }}来反编译代码,而javap用于对该类的引用。 (也许有一种更优雅的方法可以做到这一点……)


  

我发现我班上一个导入的第三方库使用grep。我不知道下一步该怎么做。

使用java.util.Base64的库不是为Android设计的,当然也不会在Android上经过测试。

您可以采取两种方法:

  • 如果该库的源代码可用,则可以尝试移植到Android。将java.util.Base64替换为java.util.Base64,并替换其他在Android上不可用的类。构建,测试等等。

  • 使用Google查看是否有人已经完成了移植工作。

  • 如果没有源代码,或者如果移植库(以及维护端口)太难了,请寻找替代库。