2009-11-21 5 views
7

ich habe: ubuntu-9.10-desktop-amd64 + NetBeans6.7.1Apache Httpclient wirft ein NoClassDefFoundError

  1. ich gerade heruntergeladen "Commons Httpclient 3.1 (Legacy)" von http://hc.apache.org/downloads.cgi.
  2. Ich habe eine neue Anwendung mit IDE NetBeans erstellt.
  3. ich konzentrierte sich auf Projekte -> Bibliotheken -> Add JAR/Ordner und hier hinzugefügt commons-Httpclient-3.1.jar
  4. Inzwischen ich schreiben kann "import org.apache.commons.httpclient. *;" Das ist in Ordnung.
  5. Aber, wenn ich versuche, enthalten keine Aussage hinzuzufügen etwas wie folgt aus:

    public static void main(String[] args) { 
        HttpClient client = new HttpClient(); 
    } 
    
  6. Es ist gut zusammengestellt.

  7. Aber wenn ich dieses Projekt laufen, erhalte ich folgende Fehler:

    ***Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
        at org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:66) 
        at SimplestAppl.Main.main(Main.java:22) 
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
        at java.security.AccessController.doPrivileged(Native Method) 
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
        at java.lang.ClassLoader.loadClass(ClassLoader.java:319) 
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
        at java.lang.ClassLoader.loadClass(ClassLoader.java:264) 
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332) 
        ... 2 more 
    Java Result: 1*** 
    

Was ist falsch?

Ich habe versucht, "HttpClient 4.0 (GA)" zu downloaden. Aber das Ergebnis war dasselbe.

+0

Sie müssen die Bibliothek für Commons-Logging hinzufügen. Wenn Sie nicht sicher sind, wie Sie dies tun können: http://stackoverflow.com/questions/5893349/how-to-add-library-files-in-netbeans –

Antwort

14

Was du gerade erlebst, ist nur eine fehlende Abhängigkeit. Java-Entwickler werden verwendet, um ihre Abhängigkeiten selbst zu sammeln, insb. wenn es darum geht, Frameworks zu protokollieren. Laden Sie commons-logging herunter und fügen Sie es Ihrem Klassenpfad hinzu. Mach das auch mit allen anderen Abhängigkeiten, die von httpclient benötigt werden.

+0

Stellen Sie außerdem sicher, dass Sie/Project/WebContent/WEB verwenden -INF/lib / – tricknology

5

Sie benötigen die Abhängigkeiten. Wenn Sie Maven benutzten, würden sie sich selbst holen. Da du es nicht bist, musst du commons-logging (und vielleicht andere) herunterladen und sie hineinwerfen.

1

Wenn Sie nicht wollen, Maven verwenden, dann

- build and launch, look at missing dependencies 
- identify vendor, fetch the jar to resolve dependencies 
- rinse/repeat until you have all dependencies satisfied 
- done 

trotzdem werden Sie nie sicher sein, ob alle Abhängigkeiten sind zu 100% geliefert. Es ist in der Regel um 150% oder 99%, aber nie zwischen

2

Ich würde gerne jeden hier kommen auf die Tatsache, dass alle Antworten, und vor allem RocketSurgeon, half mir, mein Problem im gleichen Sinne zu lösen. Ich musste Commons httpclient (Legacy 3.1), Logging und Codec herunterladen, bevor meine Probleme gelöst wurden.

Auch von Bedeutung; Mit Eclipse musste ich die .jar-Dateien extrahieren und mit "add library" in Buildpath importieren. Habe nicht nur mit ZIP-Datei gearbeitet.