Android无法在运行时从JAR中找到方法

时间:2015-03-18 19:43:46

标签: java android jar android-studio

我一直致力于使用AES加密的应用程序,这需要使用JAR进行Base 64编码和解码。

我在导入JAR时遵循了本教程this(可能是我的问题,因为他们似乎不知道他们在做什么)。逐行编译很高兴,但在手机运行时我收到错误消息

 Could not find method org.apache.commons.codec.binary.Base64.decodeBase64, referenced from method com.login.tools.Encoder.decrypt

我的应用程序gradle脚本确实引用了JAR

compile project(':commons-codec-1.10')

应该调用commons-codec-1.10 gradle脚本

configurations.create("default")
artifacts.add("default", file('commons-codec-1.10.jar'))

调用类本身看起来有点像

import org.apache.commons.codec.binary.Base64;
.
.
.
public static String decrypt(String strToDecrypt)
    setDecryptedString(new String(cipher.doFinal(Base64.decodeBase64(strToDecrypt))));

2 个答案:

答案 0 :(得分:5)

使用Gradle依赖项,而不是.jar

dependencies {
    compile 'commons-codec:commons-codec:1.10'
}

请参阅:http://mvnrepository.com/artifact/commons-codec/commons-codec/1.10

另外,我发现您正在尝试使用org.apache.commons.codec.binary.Base64.decodeBase6。 Android拥有自己的Base64库:

http://developer.android.com/reference/android/util/Base64.html

答案 1 :(得分:0)

我遇到了同样的问题。但这个解决方案适合我。希望对你有帮助。

如果要解密字符串,请使用下面的代码。您也可以使用

  

android.util.Base64

而不是

  

org.apache.commons.codec.binary.Base64

String key = "Dhruv349emaeGtuL";
String data = "example";
Log.e("Decrypt_Key", Security.decrypt(Security.encrypt(data, key), key));
Log.e("Encrypted Data", Security.encrypt(data, key));

使用这些加密&直接将方法解密到你的班级。

$sql = "INSERT INTO 
                    topics(topic_subject,
                           topic_date,
                           topic_cat,
                           topic_by)
               VALUES('" . mysql_real_escape_string($_POST['topic_subject']) . "',
                           NOW(),
                           '" . mysql_real_escape_string($_POST['topic_cat']) . "',
                           '" . $_SESSION['userid'] . "'
                           )";