web-dev-qa-db-fra.com

Impossible de résoudre l'erreur de superclasse lors du référencement de la bibliothèque .jar

  1. J'ai fait un projet Android et je l'ai exécuté. Il s'est déroulé avec succès.
  2. J'ai développé un service Web en Java et l'ai hébergé. Il a fonctionné avec succès.
  3. J'ai exporté le service Web dans un .jar et l'ai ajouté à mon Android.
  4. Lorsque j'essaie d'appeler une méthode dans le service Web, j'obtiens un Unable to resolve superclass Erreur.

Mon journal des erreurs:

Unable to resolve superclass of Lweb/service/RandomWordGeneratorService; (73)
Link of class 'Lweb/service/RandomWordGeneratorService;' failed 
Could not find class 'web.service.RandomWordGeneratorService',
    referenced from method tam.miru.Login$1.onClick
VFY: unable to resolve new-instance 110 Lweb/service/RandomWordGeneratorService;)
    in Ltam/miru/Login$1; 
VFY: replacing opcode 0x22 at 0x005a    
VFY: dead code 0x005c-006e in Ltam/miru/Login$1;.onClick (Landroid/view/View;)
31
sakthi

Je viens de commencer à obtenir ce problème après la mise à niveau vers ADT 17.

Nous avons découvert que les fichiers .jar externes doivent se trouver dans un dossier "libs" (avec un s), sinon leurs classes ne sont pas incluses dans le fichier .dex créé. Avant la mise à niveau, tout fonctionnait bien avec mes fichiers .jar dans un dossier 'lib' (pas de s).

71
rabidgremlin

Dans mon cas, je devais aller à Properties->Java Build Path->Order and Export et vérifie Android Private Libraries, puis a nettoyé le projet et a bien fonctionné.

14
Leonardo Pinto

Créer un dossier lib, le dossier libs est destiné aux bibliothèques natives. Je l'ai fait, j'ajoute la bibliothèque à lib et je crée le chemin comme bibliothèque interne et ça marche!

4
42n4

Utilisez-vous Eclipse? Dans l'affirmative, avez-vous ajouté la bibliothèque au chemin de génération comme décrit dans Ajout d'une bibliothèque/JAR à un Eclipse Android ?

2
Programmer Bruce

Je sais que c'est un post sur un fil vraiment ancien, mais après avoir lu la réponse de @rabidgremlin, j'ai vérifié la structure du dossier et j'ai trouvé qu'elle était déjà dans "libs". Cependant, en voyant le support.jar, je me suis dit que l'utilisation de cela était la cause du problème.

J'étendais "FragmentActivity" mais il s'avère que cela faisait référence au support.jar, qui avait lui-même des problèmes. Une fois que j'ai supprimé la clause extend, l'application a miraculeusement cessé de planter.

Juste un FYI au cas où quelqu'un viendrait à la recherche. À votre santé!

2
Sreedevi J

J'ai eu le même message d'erreur. Il m'a fallu un certain temps pour comprendre le problème: Android nécessite Java 1.6 pour fonctionner. Et la superclasse de mon activité a implémenté une interface à partir d'un Java projet qui avait Java 1.7 comme compilateur. Cela suffisait pour que le constructeur dex ne puisse pas lier la superclasse et cela a abouti à l'exception de classe non trouvée.

1

J'ai eu le même problème, j'ai essayé de marquer les Android bibliothèques privées sous commande et exportation et cela n'a pas fonctionné pour moi. Ensuite, j'ai remarqué que mon dossier libs n'était pas référencé sous le = Java Build Path. Je l'ai donc ajouté aux bibliothèques et cela a fonctionné.

1
DenninDalke