wake-up-neo.com

Ich erhalte die Fehlermeldung "Java.lang.ClassNotFoundException: com.google.gson.Gson", obwohl sie in meinem Klassenpfad definiert ist

Ich versuche, einige JSON-Objektzeichenfolgen zu analysieren, die ich mit gson-1.6.jar verwende. Ich habe es an der gleichen Stelle wie meine anderen .jars abgelegt und meinem Buildpath in Eclipse hinzugefügt.

Die anderen Bibliotheken funktionierten gut, wenn ich sie hinzufügte, und ich kann sie ohne Probleme verwenden, aber wenn ich versuche, das JSON-Objekt zu erstellen, erhalte ich den Titelfehler. Ich habe die anderen Fragen mit diesem Fehler durchgesehen, aber ich konnte keine Lösung finden, bei der es nicht um etwas ging, das ich ausprobiert habe, oder etwas, das nichts damit zu tun hat.

Ich importiere es oben mit:

import com.google.gson.Gson;

Dann verwenden Sie es später in einer statischen Funktion wie folgt:

Gson g = new Gson();

Hier ist meine von Eclipse generierte Klassenpfaddatei [Path], die den tatsächlichen Pfad ersetzt:

<?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>

sowie mein Build-Pfad-Fenster: Build Path Screen

Ich bin an diesem Punkt etwas verloren. Ich habe Google ausprobiert und die Beiträge sagen im Grunde nur, dass Sie Ihren Build-Pfad hinzufügen sollen. Hat jemand Ideen?

Bearbeiten: Weitere Informationen

Der Code, der auf com.google.gson.GSON verweist, wird von einem jsp als Bean verwendet. Diese Funktion wird aus dem jsp aufgerufen und der Fehler tritt auf, sobald die Funktion ausgeführt wird. Die erste Zeile in der Funktion lautet:

Gson g = new Gson();

Es scheint gut zu kompilieren und zu implementieren, aber wenn es ausgeführt wird, erhalte ich die Fehlermeldung.

Vielen Dank

27
Fry

Im Falle einer JSP/Servlet-Webapplikation müssen Sie nur JAR-Dateien von Drittanbietern im Ordner /WEB-INF/lib ablegen. Wenn es sich bei dem Projekt um ein Dynamic Web Project handelt, kümmert sich Eclipse automatisch auch um den Buildpfad. Sie müssen nicht mit dem Eclipse-Buildpfad arbeiten. Vergiss nicht, alles rückgängig zu machen.

55
BalusC

Ich hatte das gleiche Problem und versuchte die oben genannten Lösungen, aber keine davon funktionierte für mich. Dann habe ich folgende Schritte ausprobiert und das Problem wurde gelöst:

  • Gehen Sie zu den Projekteigenschaften.
  • Gehen Sie zur Option Java Build Path.
  • Fügen Sie dann *.jar-Datei als externes Glas hinzu.
  • Gehen Sie dann zur Bestell- und Exportoption und wählen Sie die Bibliotheken und Gläser des Projekts aus.
  • speichern Sie die aktuellen Änderungen und bereinigen Sie das Projekt, und führen Sie das Projekt erneut aus.
20
karn

Klicken Sie auf Deployment Assembly (rechts über Java Build Path, das Sie als aktiv anzeigen) und stellen Sie sicher, dass dort json-lib-2.4-jdk15.jar angezeigt wird.

Normalerweise sollten Sie es zu Ihrem Erstellungspfad hinzufügen und aus Ihrem Projekt exportieren. Nach dem Export wird die WTP-Warnung angezeigt, dass es nicht Teil der Bereitstellung ist. Wählen Sie die Option Quick Fix und fügen Sie sie Ihrem Bereitstellungspfad hinzu.

Ich hatte gerade das gleiche Problem ...

Um das Problem zu lösen (zumindest in meinem Fall), stellen Sie sicher, dass Sie den lib-Ordner in Ihren Klassenpfad aufgenommen haben:

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

Oder wenn Sie alle Gläser in den Ordner aufnehmen möchten:

Bundle-ClassPath: lib/

Sie müssen die JAR-Dateien weiterhin wie oben gezeigt im Java-Erstellungspfad platzieren. Dann sollte Ihr importiertes Glas im Ordner "Referenzierte Bibliotheken" angezeigt werden.

3
Joseph Carroll

Für mich wurde das Problem gelöst, indem die Gläser in meinem Apache/Tomcat/lib-Ordner hinzugefügt wurden! .

1
karthik339

Ich bin auf den obigen Fehler gestoßen, als ich in Eclipse erstellt und ausgeführt habe, wo mit Ausnahme dieses Fehlers alles in Ordnung zu sein schien. Ich habe jedoch festgestellt, dass ein Maven-Build fehlgeschlagen ist und dass ich Gson in meine pom.xml aufnehmen musste. Nach dem Reparieren der Datei pom.xml war alles in Ordnung.

0
Jeff Taylor

Führen Sie die Schnellkorrektur auf der Registerkarte "Marker" aus.

Image Source metamug.com

Referenz: https://metamug.com/blog/Eclipse-gson-class-not-found

0
Sorter

Das gleiche Problem hatte ich bei der Entwicklung eines KNIME-Knotens/Plugins in der Eclipse-Umgebung. Die Lösung bestand nicht nur darin, die gson.jar als externe JAR zum Erstellungspfad hinzuzufügen, sondern es war auch erforderlich, zu plugin.xml und dann zum Register Abhängigkeiten zu wechseln und com.google.gson als erforderliches Plugin hinzuzufügen. 

0
mwdoerner