Yöntem Android DigestUtils kullanarak bulunamadı
Kütüphane DigestUtils Android 2.3.1 uygulamayı çalıştırırken aşağıdaki hatayı alıyorum ancak: 1.6, yazılım ve programları kullanarak kullanmaya çalışıyorum
Could not find method org.apache.commons.codec.binary.Hex.encodeHexString, referenced from method org.apache.commons.codec.digest.DigestUtils.shaHex
Burada stacktrace:
02-03 10:25:45.153: I/dalvikvm(1230): Could not find method org.apache.commons.codec.binary.Hex.encodeHexString, referenced from method org.apache.commons.codec.digest.DigestUtils.shaHex
02-03 10:25:45.153: W/dalvikvm(1230): VFY: unable to resolve static method 329: Lorg/apache/commons/codec/binary/Hex;.encodeHexString ([B)Ljava/lang/String;
02-03 10:25:45.153: D/dalvikvm(1230): VFY: replacing opcode 0x71 at 0x0004
02-03 10:25:45.153: D/dalvikvm(1230): VFY: dead code 0x0007-0008 in Lorg/apache/commons/codec/digest/DigestUtils;.shaHex ([B)Ljava/lang/String;
02-03 10:25:45.163: D/AndroidRuntime(1230): Shutting down VM
02-03 10:25:45.163: W/dalvikvm(1230): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-03 10:25:45.173: E/AndroidRuntime(1230): FATAL EXCEPTION: main
02-03 10:25:45.173: E/AndroidRuntime(1230): java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Hex.encodeHexString
02-03 10:25:45.173: E/AndroidRuntime(1230): at org.apache.commons.codec.digest.DigestUtils.md5Hex(DigestUtils.java:226)
02-03 10:25:45.173: E/AndroidRuntime(1230): at com.caumons.trainingdininghall.ConnectionProfileActivity.onCreate(ConnectionProfileActivity.java:20)
02-03 10:25:45.173: E/AndroidRuntime(1230): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-03 10:25:45.173: E/AndroidRuntime(1230): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
02-03 10:25:45.173: E/AndroidRuntime(1230): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
02-03 10:25:45.173: E/AndroidRuntime(1230): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-03 10:25:45.173: E/AndroidRuntime(1230): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
02-03 10:25:45.173: E/AndroidRuntime(1230): at android.os.Handler.dispatchMessage(Handler.java:99)
02-03 10:25:45.173: E/AndroidRuntime(1230): at android.os.Looper.loop(Looper.java:123)
02-03 10:25:45.173: E/AndroidRuntime(1230): at android.app.ActivityThread.main(ActivityThread.java:3647)
02-03 10:25:45.173: E/AndroidRuntime(1230): at java.lang.reflect.Method.invokeNative(Native Method)
02-03 10:25:45.173: E/AndroidRuntime(1230): at java.lang.reflect.Method.invoke(Method.java:507)
02-03 10:25:45.173: E/AndroidRuntime(1230): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-03 10:25:45.173: E/AndroidRuntime(1230): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-03 10:25:45.173: E/AndroidRuntime(1230): at dalvik.system.NativeStart.main(Native Method)
Bu özel duruma neden olan kod satırına:
String hash = DigestUtils.shaHex("textToHash");
Android dışında bir Java sınıfı içinde aynı kodu yürütülen var ve işe yarıyor! Böylece, Android ile çalışırken neden çalışmadığını bilmiyorum... benim app yeni libs/ klasörü içine libraty koydum ve BuildPath kullanmak için güncellendi. Eğer yerine md5 sha1 kullanın aynı durum. Herhangi bir yardım mutluluk duyacağız! Teşekkür ederim.
GÜNCELLEME:
Bu çok aktif bir soru olarak, onun çözümü basittir @DA25, lehine kabul cevabı değiştirdim ve upvotes yüksek sayıda işe yaradığını kanıtlıyor.
CEVAP
Aynı sorun benim Android uygulaması DigestUtils kullanmaya karşılaştım. Bu arama ile bulabildiğim en iyi cevap oldu, ama yeniden inşa etmek için tereddüt ettim .kavanoz ad değiştirdi ile dosya. Bu konu üzerinde biraz zaman geçirdikten sonra, bu sorunu çözmek için daha kolay bir yol buldum. Benim kod için sorun ifade edildi
String s = DigestUtils.md5Hex(data);
Aşağıdaki ile bu deyimi değiştirmek ve çalışacak:
String s = new String(Hex.encodeHex(DigestUtils.md5(data)));
Benzer şekilde, shaHex exampl için, bunu değiştirebilirsiniz
String hash = new String(Hex.encodeHex(DigestUtils.sha("textToHash");
Bu Android encodeHexString sahip olsa bile, çünkü işleri(), encodeHex var(). Bu aynı sorun haline çalıştırmak başkalarına yardımcı olacağını umuyoruz.
Nasıl bir Niyet kullanarak bir Android...
Gradle DSL yöntem bulunamadı: '&#...
Android e-Posta gönderme varsayılan/ku...
Bir özel ilan android UI öğesi XML kul...
Parametre olarak geçirmek Yöntem kulla...