IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Erreur "Class resolved by unexpected DEX"


Sujet :

Android

  1. #1
    Membre régulier Avatar de LaDeveloppeuse
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Points : 73
    Points
    73
    Par défaut Erreur "Class resolved by unexpected DEX"
    Bonjour a tous,

    Je suis assez novice en développement android et j'ai quelque soucis en la matière.
    J'ai été intégré récemment sur un projet android d'envergure et j'ai un soucis que pas grand monde comprends dans ma boite...
    Voici le sujet :
    J'utilise la librairie de spongycastle pour mettre en place la couche sécurité au projet. Tout compile et fonctionne a merveille sauf un test JUnit qui ne passe pas. En voici la trace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    com.toto.mvp.mmp.services.clientcert.ClientCertificateRequestTest:
    Error in testCsrIsGeneratedAndThenSerialized:
    java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
            at com.toto.mvp.mmp.services.clientcert.ClientCertificateRequest.constructCsr(ClientCertificateRequest.java:92)
            at com.toto.mvp.mmp.services.clientcert.ClientCertificateRequest.writeTo(ClientCertificateRequest.java:61)
            at com.toto.mvp.mmp.services.utils.parsers.serializer.XmlEntitySerializer.writeEntity(XmlEntitySerializer.java:189)
            at com.toto.mvp.mmp.services.clientcert.ClientCertificateRequestTest.testCsrIsGeneratedAndThenSerialized(ClientCertificateRequestTest.java:31)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
            at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
            at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:537)
            at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1574)
    .
    et voici le logcat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    W/dalvikvm(14239): Class resolved by unexpected DEX: Lcom/toto/mvp/mmp/services/clientcert/ClientCertificateRequest;(0x414dfce0):0x1b3468 ref [Lorg/spongycastle/jce/X509Principal;] Lorg/spongycastle/jce/X509Principal;(0x414dfce0):0xd22f0
    W/dalvikvm(14239): (Lcom/toto/mvp/mmp/services/clientcert/ClientCertificateRequest; had used a different Lorg/spongycastle/jce/X509Principal; during pre-verification)
    I/TestRunner(14239): failed: testCsrIsGeneratedAndThenSerialized(com.toto.mvp.mmp.services.clientcert.ClientCertificateRequestTest)
    I/TestRunner(14239): ----- begin exception -----
    I/TestRunner(14239): 
    I/TestRunner(14239): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
    I/TestRunner(14239):    at com.toto.mvp.mmp.services.clientcert.ClientCertificateRequest.constructCsr(ClientCertificateRequest.java:92)
    I/TestRunner(14239):    at com.toto.mvp.mmp.services.clientcert.ClientCertificateRequest.writeTo(ClientCertificateRequest.java:61)
    I/TestRunner(14239):    at com.toto.mvp.mmp.services.utils.parsers.serializer.XmlEntitySerializer.writeEntity(XmlEntitySerializer.java:189)
    I/TestRunner(14239):    at com.toto.mvp.mmp.services.clientcert.ClientCertificateRequestTest.testCsrIsGeneratedAndThenSerialized(ClientCertificateRequestTest.java:31)
    I/TestRunner(14239):    at java.lang.reflect.Method.invokeNative(Native Method)
    I/TestRunner(14239):    at java.lang.reflect.Method.invoke(Method.java:511)
    I/TestRunner(14239):    at junit.framework.TestCase.runTest(TestCase.java:154)
    I/TestRunner(14239):    at junit.framework.TestCase.runBare(TestCase.java:127)
    I/TestRunner(14239):    at junit.framework.TestResult$1.protect(TestResult.java:106)
    I/TestRunner(14239):    at junit.framework.TestResult.runProtected(TestResult.java:124)
    I/TestRunner(14239):    at junit.framework.TestResult.run(TestResult.java:109)
    I/TestRunner(14239):    at junit.framework.TestCase.run(TestCase.java:118)
    I/TestRunner(14239):    at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
    I/TestRunner(14239):    at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
    I/TestRunner(14239):    at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:537)
    I/TestRunner(14239):    at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1574)
    I/TestRunner(14239): ----- end exception -----
    Après quelques recherche, il se trouve que le soucis est que la librairy soit chargé deux fois durant la construction du fichier .dex ... ce qui m'avance pas énormément...

    Certain se demanderont peut etre pourquoi j'utilise pas bouncycastle qui est nativement intégré dans android. Tout simplement parce que j'ai le meme probleme avec bouncycastle et je pensai le regler avec spongycastle mais en vain... lol

    Avez vous des pistes ou bien encore mieux une solution à m'apporter ?
    Je vous remercie d'avance !
    C'est pas dur, en informatique quand y a un problème, dans la majorité des cas il se trouve entre la chaise et le clavier...

  2. #2
    Membre régulier Avatar de LaDeveloppeuse
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Points : 73
    Points
    73
    Par défaut
    Bon, bah j'ai trouvé la solution de par moi même....

    Pour ceux que cela pourrait aider, j'ai explicitement exclu la librairie de la compilation de mon apk de test en le spécifiant dans le rules.mk et le Android.mk :

    rules.mk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    # Explicitly exclude SpongyCastle libraries from the test APK to avoid duplicate references
    MVPTests_EXCLUDE_LIB := $(SCPROV_JAR) $(SCPKIX_JAR)
    android.mk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    # test packages may exclude libraries to be included in the APK	
    LOCAL_LIB_INC := $(filter-out $($(LOCAL_MODULE)_EXCLUDE_LIB), $(LOCAL_LIB_INC))
    A bientôt !
    C'est pas dur, en informatique quand y a un problème, dans la majorité des cas il se trouve entre la chaise et le clavier...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur "Could not resolve class: org.apache.wicket.Initializer"
    Par pcouas dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 16/10/2012, 06h34
  2. [débutant] erreur "indice de liste hors limites(1)"
    Par lidouka dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2005, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo