SORU
3 ŞUBAT 2012, Cuma


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
14 ŞUBAT 2012, Salı


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 07cadikiz07

    07cadikiz07

    17 EKİM 2007
  • JamesAtiPhone

    JamesAtiPhon

    16 EYLÜL 2010
  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009