web-dev-qa-db-fra.com

VFY: impossible de résoudre la méthode virtuelle

J'utilise Jackson dans mon application Android.

J'ai ajouté ces deux jarres dans mon chemin de construction:

jackson-core-asl-1.0.0.jar
jackson-mapper-asl-1.0.0.jar

Mais je continue à voir cela dans mon Logcat:

11-24 18:25:15.093: I/dalvikvm(28842): Could not find method org.codehaus.jackson.map.ObjectMapper.getTypeFactory, referenced from method org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.getJavaType
11-24 18:25:15.093: W/dalvikvm(28842): VFY: unable to resolve virtual method 17967: Lorg/codehaus/jackson/map/ObjectMapper;.getTypeFactory ()Lorg/codehaus/jackson/map/type/TypeFactory;

C'est seulement sur cette méthode. J'ai recherché StackOverflow sur des erreurs similaires, mais toutes étaient:

  • Bibliothèques mauvaises versions (les miennes sont correctes)
  • Bibliothèques pas dans/libs mais dans/lib (je les ai dans/libs)

Ma version Android est 4.0.3. J'utilise ceci en combinaison avec les bibliothèques Spring Android.

14
tolgap

J'avais un problème similaire; en supposant que vous utilisez Eclipse, essayez les solutions suivantes:

  1. Clic droit sur votre projet
  2. Allez dans Chemin de construction> Configurer le chemin de construction ...
  3. Cliquez sur l'onglet "Commande et exportation"
  4. Cochez les cases à côté de vos pots, puis cliquez sur OK
  5. Nettoyez et construisez votre projet, puis voyez si cela fonctionne.

Espérons que cela fonctionne.

13
Erhannis

Cela peut également se produire si des méthodes d'appel de code n'existent pas dans la version actuelle du système d'exploitation du périphérique.

Par exemple, si, quelque part dans votre application, vous appelez Settings.Global.getFloat(String) - qui a été ajouté à l'API 17 - et que le périphérique actuel exécute l'API 15, cet avertissement apparaît dans vos journaux.

Il y aura un crash si vous essayez réellement d'invoquer cette méthode. Il n'y a pas de problème si vous n'appelez pas cette méthode. Donc, assurez-vous de toujours vérifier la version actuelle avant d'appeler cela.

    private float getAnimationSetting(ContentResolver contentResolver,
                                      String setting) throws Settings.SettingNotFoundException {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            return getAnimationSettingJB(contentResolver, setting);
        } else {
            return getAnimationSettingLegacy(contentResolver, setting);
        }
    }

    private float getAnimationSettingLegacy(ContentResolver contentResolver,
                                            String setting) throws Settings.SettingNotFoundException {
        return Settings.System.getFloat(contentResolver, setting);
    }

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
    private float getAnimationSettingJB(ContentResolver contentResolver,
                                        String setting) throws Settings.SettingNotFoundException {
        return Settings.Global.getFloat(contentResolver, setting);
    }
11
Pedro Loureiro

Dans mon cas, cette solution ne peut pas fonctionner. 
Vérifiez que le format du code du fichier jar est adapté à JDK 1.6,
J'ai trouvé ce problème en modifiant le format de mon code lib de 1.7 à 1.6, et ce problème serait résolu.

  1. Pour ajouter un fichier JAR externe sur Eclipse for Android Project, procédez comme suit: 
    . Propriétés du projet -> Chemin de construction Java -> Bibliothèques, puis ajoutez ces fichiers Jar externes.
    . Propriétés du projet -> Chemin de construction Java -> Ordre et exportation, puis vérifiez ces fichiers Jar externes.
    Vous pouvez nettoyer et reconstruire le projet cible pour voir la taille du fichier apk et tester ces fonctions dans un fichier JAR externe.

  2. Pour ajouter un fichier JAR externe sur Eclipse for Android Project, procédez comme suit: 
    . copiez le fichier jar dans la bibliothèque du projet Android, et faites. 

    Pour # 1, il est facile de gérer plusieurs projets pour une bibliothèque.
    Pour le n ° 2, il est facile à utiliser et aucune configuration requise.

    C'est tout.
1
Leo Chen