web-dev-qa-db-fra.com

J'obtiens l'erreur "Java.lang.ClassNotFoundException: com.google.gson.Gson" bien qu'elle soit définie dans mon chemin d'accès aux classes.

J'essaie d'analyser certaines chaînes d'objet JSON que j'obtiens en utilisant gson-1.6.jar. Je l'ai placé au même emplacement que mes autres .jars et je l'ai ajouté à mon chemin de construction dans Eclipse.

Les autres bibliothèques ont bien fonctionné lorsque je les ai ajoutées et je peux les utiliser sans problème, mais lorsque j'essaie de créer l'objet JSON, j'obtiens l'erreur de titre. J'ai parcouru les autres questions avec cette erreur, mais je n'ai pas pu trouver de solution qui n'implique pas quelque chose que j'ai essayé ou quelque chose de différent.

Je l'importe près du sommet en utilisant:

import com.google.gson.Gson;

Puis utilisez-le plus tard dans une fonction statique comme ceci:

Gson g = new Gson();

Voici mon fichier de chemin de classe généré par Eclipse [Path] substitué au chemin actuel:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER/org.Eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre6">
        <attributes>
            <attribute name="owner.project.facets" value="Java"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.Eclipse.jst.server.core.container/org.Eclipse.jst.server.Tomcat.runtimeTarget/Apache Tomcat v5.5">
        <attributes>
            <attribute name="owner.project.facets" value="jst.web"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.Eclipse.jst.j2ee.internal.web.container"/>
    <classpathentry kind="con" path="org.Eclipse.jst.j2ee.internal.module.container"/>
    <classpathentry kind="lib" path="[Path]/jabbabase-ws-jwsdp-client-2.4.7.jar"/>
    <classpathentry kind="lib" path="[Path]/log4j-1.2.16.jar"/>
    <classpathentry kind="lib" path="[Path]/gson-1.6.jar"/>
    <classpathentry kind="output" path="build/classes"/>
</classpath>

ainsi que ma fenêtre de chemin de construction: Build Path Screen

Je suis un peu perdu à ce stade. J'ai essayé Google et les publications disaient simplement d'ajouter à votre chemin de génération. Quelqu'un a des idées?

Edit: Plus d'infos

Le code référençant com.google.gson.GSON est utilisé comme un bean par un jsp. Cette fonction est appelée à partir de jsp et l'erreur se produit dès que la fonction est exécutée. La première ligne de la fonction est:

Gson g = new Gson();

Il semble que la compilation et le déploiement se déroulent bien, mais lorsqu’il est exécuté, j’obtiens le message d’erreur.

Merci

27
Fry

Dans le cas d'une application Web JSP/Servlet, il vous suffit de supprimer les fichiers JAR tiers dans le dossier /WEB-INF/lib. Si le projet est un projet Web dynamique, Eclipse se chargera automatiquement de définir correctement le chemin de construction. Vous devez pas devez jouer avec le chemin de construction Eclipse. N'oubliez pas de tout annuler.

55
BalusC

J'ai rencontré le même problème et essayé les solutions ci-dessus, mais aucune d'entre elles n'a fonctionné pour moi. Ensuite, j'ai essayé les étapes suivantes et le problème a été résolu:

  • Accédez aux propriétés du projet.
  • Aller à l'option de chemin de construction Java.
  • Ajoutez ensuite le fichier *.jar en tant que jar externe.
  • Ensuite, allez à l'option order and export et sélectionnez les bibliothèques et les bocaux du projet.
  • sauvegardez les modifications en cours, nettoyez le projet et relancez le projet.
20
karn

Cliquez sur Deployment Assembly (juste au-dessus de Java Build Path que vous indiquez actif) et assurez-vous que json-lib-2.4-jdk15.jar y est visible.

En règle générale, vous devez l'ajouter à votre chemin de génération et l'exporter de votre projet. Une fois qu'il est exporté, WTP vous avertit que cela ne fait pas partie du déploiement. Choisissez l'option Quick Fix et ajoutez-la à votre chemin de déploiement.

5
Alexander Pogrebnyak

J'avais juste le même problème ...

Pour résoudre le problème (du moins dans mon cas), assurez-vous d’avoir inclus le dossier lib dans votre chemin de classe bundle:

Manifest-Version: 1.0
... 
Bundle-ClassPath: lib/gson-1.6.jar,
 .
...

Ou si vous souhaitez inclure tous les fichiers jar dans le dossier:

Bundle-ClassPath: lib/

Vous devrez toujours placer les fichiers jar sur le chemin de génération Java, comme indiqué ci-dessus. Ensuite, vos fichiers importés devraient apparaître dans le dossier "Bibliothèques référencées"

3
Joseph Carroll

Pour moi, le problème a été résolu en ajoutant les fichiers jar dans mon dossier Apache/Tomcat/lib! .

1
karthik339

Faites la réparation rapide dans l'onglet Marqueurs.

Image Source metamug.com

Référence: https://metamug.com/blog/Eclipse-gson-class-not-found

0
Sorter

J'ai eu le même problème lors du développement d'un nœud/plug-in KNIME dans l'environnement Eclipse. La solution consistait non seulement à ajouter le fichier gson.jar en tant que fichier JAR externe au chemin de génération, mais également à accéder à plugin.xml, puis à l'onglet Dépendances et à ajouter com.google.gson en tant que plug-in requis. 

0
mwdoerner