Сегодня я попробовал включая apache.commons.codec пакет в моем приложении Android и не мог получить его выполнение. Android не мог найти метод ord.apache.commons.codec.binary.* и вывод следующие ошибки в DDMS
01-12 8:41:48.161: ERROR/dalvikvm (457): не Мог найти метод org.apache.commons.codec.binary. Base64.encodeBase64URLSafeString, на который ссылаются из метода com.dqminh.app.util. Util.sendRequest
01-12 8:41:48.161: WARN/dalvikvm (457): VFY: не мог разрешить статический метод 10146: Lorg/apache/commons/codec/binary/Base64; .encodeBase64URLSafeString ([B) Ljava/lang/String;
01-12 8:41:48.161: WARN/dalvikvm (457): VFY: отклонение кода операции 0x71 в 0x0004
Какая-либо подсказка о том, как решить эту проблему?Большое спасибо.
У меня была похожая проблема при использовании android с OAuth библиотекой, которую я разрабатываю.
Я также получил от android, что, хотя я включил apache.commons.codec
в classpath, определенный метод (encodeBase64String
) не был найден.
Проверяя javadocs, оба метода заявлены как только для версии 1.4 и выше, поэтому я предполагаю, что android уже включает старую версию commons.codec
, в которой эти методы действительно не определены.
Моим решением было использовать более старый метод, например, такой:
String encodedString = new String(Base64.encodeBase64('string to encode'));
Метод, который вы хотите использовать, отличается, поскольку он заменяет + и / на безопасные для url значения - и _. Поэтому вы, вероятно, можете использовать что-то вроде:
String encodedString = new String(Base64.encodeBase64('string to encode'));
String safeString = encodedString.replace('+','-').replace('/','_');
Надеюсь, это поможет!