Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Exception VerifyError en utilisant JIXB

LogCat affiche: Could not find class 'X', referenced from method 'Y

    10 septembre 2013 à 15:29:16

    Bonjour,
    Je développe une application sous Eclipse devant utiliser la lib JIBX. J'ai commencé par suivre ce tutoriel : "http://www.ibm.com/developerworks/java/tutorials/j-jibx2/". Tout fonctionne parfaitement dans un projet JAVA classique. Je peux générer un xsd à partir de classe, générer des classes à partir d'un xsd puis exécuter le programme qui retourne les bons résultats.

    J'ai voulu refaire ce tuto mais sur android. J'ai réimporté les mêmes libs que le projet classique pour que ça compile (JIBX est censé être compatible avec Android). Je peux générer les classes et les objets, mais lorsque j'essaye de compiler ce projet, une erreur apparait sur le téléphone virtuel et le LogCat affiche le message suivant :

    09-10 12:33:54.957: I/Process(1905): Sending signal. PID: 1905 SIG: 9
    09-10 12:34:05.047: I/dalvikvm(1944): Could not find method org.jibx.runtime.BindingDirectory.getFactory, referenced from method com.example.jibxtestandroid.MainActivity.calcul
    09-10 12:34:05.079: W/dalvikvm(1944): VFY: unable to resolve static method 25: Lorg/jibx/runtime/BindingDirectory;.getFactory (Ljava/lang/Class;)Lorg/jibx/runtime/IBindingFactory;
    09-10 12:34:05.079: D/dalvikvm(1944): VFY: replacing opcode 0x71 at 0x0004
    09-10 12:34:05.079: W/dalvikvm(1944): VFY: unable to resolve exception class 34 (Lorg/jibx/runtime/JiBXException;)
    09-10 12:34:05.079: W/dalvikvm(1944): VFY: unable to find exception handler at addr 0x8
    09-10 12:34:05.087: W/dalvikvm(1944): VFY:  rejected Lcom/example/jibxtestandroid/MainActivity;.calcul ()Ljava/lang/String;
    09-10 12:34:05.087: W/dalvikvm(1944): VFY:  rejecting opcode 0x0d at 0x0008
    09-10 12:34:05.087: W/dalvikvm(1944): VFY:  rejected Lcom/example/jibxtestandroid/MainActivity;.calcul ()Ljava/lang/String;
    09-10 12:34:05.087: W/dalvikvm(1944): Verifier rejected class Lcom/example/jibxtestandroid/MainActivity;
    09-10 12:34:05.087: W/dalvikvm(1944): Class init failed in newInstance call (Lcom/example/jibxtestandroid/MainActivity;)
    09-10 12:34:05.087: D/AndroidRuntime(1944): Shutting down VM
    09-10 12:34:05.087: W/dalvikvm(1944): threadid=1: thread exiting with uncaught exception (group=0x414c4700)
    09-10 12:34:05.147: E/AndroidRuntime(1944): FATAL EXCEPTION: main
    09-10 12:34:05.147: E/AndroidRuntime(1944): java.lang.VerifyError: com/example/jibxtestandroid/MainActivity
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at java.lang.Class.newInstanceImpl(Native Method)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at java.lang.Class.newInstance(Class.java:1130)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at android.os.Handler.dispatchMessage(Handler.java:99)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at android.os.Looper.loop(Looper.java:137)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at android.app.ActivityThread.main(ActivityThread.java:5103)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at java.lang.reflect.Method.invokeNative(Native Method)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at java.lang.reflect.Method.invoke(Method.java:525)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    09-10 12:34:05.147: E/AndroidRuntime(1944):     at dalvik.system.NativeStart.main(Native Method)
    09-10 12:39:05.443: I/Process(1944): Sending signal. PID: 1944 SIG: 9

    J'ai commencé par référencer jibx-run.jar et à le cocher de le buildpath, à l'onget order and export. Je l'ai même mis au top. ça n'a rien changé. Le message d'erreurs restait le même. J'ai alors pensé à référencer et cocher toutes les libs impotées de JIBX. Là, éclipse plante et affiche un message d'erreur : "Unable to execute dex: Java heap space ". Qui veut surement dire que les libs chargées sont trop lourdes (l'ensemble fait 7Mo).

    Avez-vous une idée d'où viens l'erreur ? Les librairies sont correctements incluses et il n'y pas d'erreur eclipse.
    Merci

    -
    Edité par Skartt 10 septembre 2013 à 15:30:27

    • Partager sur Facebook
    • Partager sur Twitter
      10 septembre 2013 à 17:56:08

      En fait j'ai trouvé la solution. il fallait que j'ajoute au build path uniquement jibx-schema.jar, qui a ajouté automatiquement jibx-run.jar et quelques autres librairies (pas toutes justement). Ensuite il fallait cocher cette librairie dans l'onglet order and export
      • Partager sur Facebook
      • Partager sur Twitter

      [Android] Exception VerifyError en utilisant JIXB

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown