7 votes

Erreur lors de l'importation d'une jarre dans un projet Android

Il s'agit d'un problème récent avec le nouveau SDK pour Android.

Le SDK Android utilise maintenant la convention ANT pour importer des jars externes dans le paquet apk, les jars externes doivent se trouver dans le dossier "lib" et le SDK exportera toujours les jars de ce dossier.

Mon problème est que lorsque j'ajoute mes jars et que je lance mon projet, j'obtiens ce message :

difficulté à traiter "javax/transaction/HeuristicCommitException.class" :

Utilisation inappropriée ou erronée d'une classe de base (java.* ou javax.*) lorsque l'on ne construit pas de bibliothèque de base. ne pas construire une bibliothèque de base.

Cela est souvent dû à des dans le projet de votre application, lorsque vous utilisez un IDE (comme Eclipse). Si vous êtes sûr de ne pas définir intentionnellement une classe de base, alors ceci est l'explication la plus probable de ce qui se passe.

Cependant, il se peut que vous soyez dont la source peut provenir, par exemple, d'un projet de machine virtuelle autre qu'Android. projet de machine virtuelle non Android. Cela ne fonctionnera certainement pas. fonctionnera pas. Au minimum, cela compromet la compatibilité de votre application avec les futures versions de la plateforme. avec les futures versions de la plateforme. Elle est aussi souvent d'une légalité légalité douteuse.

Si vous avez vraiment l'intention de construire une bibliothèque de base -- qui n'est qu'un de la création d'une distribution complète de machine virtuelle, par opposition à la compilation d'une application, utilisez l'option "--core-library" pour supprimer ce message d'erreur.

Si vous utilisez "--core-library" mais que vous construisez en fait une application, soyez prudent. une application, sachez que votre application échouera toujours à se de se construire ou de s'exécuter, à un moment ou à un autre. Préparez-vous à avoir des clients en colère qui constateront, par exemple, que votre application cesse de fonctionner dès qu'ils qu'ils mettent à jour leur système d'exploitation. Vous serez responsable de ce problème.

Si vous utilisez légitimement un code qui se trouve dans un core alors la solution la plus simple et la plus sûre est de repackager ce code. ce code. C'est-à-dire déplacer les classes en question dans votre propre espace de noms du paquetage dans votre propre espace de noms. Cela signifie qu'elles ne seront jamais en conflit avec les classes du système de base. du système. JarJar est un outil qui peut vous aider dans cette entreprise. Si vous n'y parvenez pas, c'est le signe que que le chemin que vous empruntez vous mènera finalement à la douleur, à la souffrance, au chagrin, et à la lamentation.

J'ai lu ce message ici et sur d'autres forums, certaines personnes disent que c'est Android.jar qui est le problème, donc le supprimer va le résoudre.

Mais je n'ai pas trouvé Android.jar, sauf la bibliothèque Android qui ne peut pas être supprimée.

Ce problème d'importation de librairies sur Android me met hors de moi car mon application fonctionnait très bien.

1voto

Kri Points 933

Une fois, essayez de nettoyer votre projet et de le reconstruire... cela pourrait vous aider... parce que cela m'a aidé... j'avais le même problème avec mon nouveau sdk...

1voto

areyling Points 893

J'ai également rencontré un certain nombre de problèmes lors de la première mise à jour, mais j'ai finalement réussi à le faire fonctionner. Quelques suggestions, basées sur ce qui a finalement fonctionné pour moi ainsi que pour un ami :

Assurez-vous que vos bocaux externes se trouvent dans un dossier "libs" dans le répertoire de base du projet (notez le "s" ici - et non "lib"). Si vous faites des changements, assurez-vous de rafraîchir le projet et de le nettoyer (puis de le reconstruire s'il n'est pas configuré pour se construire automatiquement).

Dans les propriétés de votre projet, sous Java Build Path > Libraries tab, supprimez tout sauf les nœuds Android X.X.X et Android Dependencies. Encore une fois, si vous faites des changements, assurez-vous de rafraîchir le projet et de le nettoyer (puis de le reconstruire s'il n'est pas configuré pour se construire automatiquement).

Si vous avez fait cela pour votre projet et tous les projets de bibliothèque qu'il utilise dans votre espace de travail et que vous avez toujours des problèmes, essayez de supprimer tous les projets de bibliothèque Android (dans les propriétés du projet > Android) ainsi que toutes les bibliothèques du chemin de construction Java (y compris Android X.X.X et les dépendances Android cette fois) de chaque projet, nettoyez-les, puis changez la version Android/appliquez-la/modifiez-la à nouveau pour forcer une reconstruction. (Faites cela pour chaque projet en commençant par votre projet de bibliothèque de base, en ne les ajoutant à vos autres projets qu'une fois qu'ils se construisent sans erreur).

J'espère que cela vous aidera.

0voto

koljaTM Points 3892

J'ai obtenu cette erreur sur un projet de test, alors que je construisais avec Maven. Je l'ai résolue en ajoutant

<scope>provided</scope>

aux bibliothèques de test Android.

    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android-test</artifactId>
        <version>4.1.1.4</version>
        <scope>provided</scope>
    </dependency>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X