2009-11-21 5 views
7

je: ubuntu-9.10-desktop-amd64 + NetBeans6.7.1Apache HttpClient jette un NoClassDefFoundError

  1. Je viens de télécharger "Commons HttpClient 3.1 (héritage)" de http://hc.apache.org/downloads.cgi.
  2. J'ai créé une nouvelle application avec IDE NetBeans.
  3. Je me suis concentré sur les projets -> Bibliothèques -> Ajouter JAR/Dossier et ici ajouté commons-httpclient-3.1.jar
  4. Maintenant, je peux écrire "org.apache.commons.httpclient import *;." C'est acceptable.
  5. Mais, si je tente d'ajouter une déclaration inclus quelque chose comme ceci:

    public static void main(String[] args) { 
        HttpClient client = new HttpClient(); 
    } 
    
  6. Il est compilé bien.

  7. Mais quand je lance ce projet, je reçois les erreurs suivantes:

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

Qu'est-ce qui ne va pas?

J'ai essayé de télécharger "HttpClient 4.0 (GA)". Mais le résultat était le même.

+0

Vous devez ajouter la bibliothèque pour la journalisation des communs. Si vous êtes confus sur la façon de faire cela: http://stackoverflow.com/questions/5893349/how-to-add-library-files-in-netbeans –

Répondre

14

Ce que vous rencontrez est juste une dépendance manquante. Les développeurs Java sont utilisés pour rassembler leurs dépendances, en particulier quand il s'agit de cadres de journalisation. Télécharger commons-logging et l'ajouter à votre classpath. Faites-le aussi avec toutes les autres dépendances requises par httpclient.

+0

Aussi, assurez-vous que vous utilisez/Project/WebContent/WEB -INF/lib / – tricknology

5

Vous avez besoin des dépendances. Si vous utilisiez maven, ils iraient chercher eux-mêmes. Puisque vous ne l'êtes pas, vous devez aller télécharger les journaux de connexion (et peut-être d'autres) et les lancer.

1

Si vous ne voulez pas utiliser Maven, puis

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

de toute façon vous serez jamais sûr si toutes les dépendances sont 100% fournis. C'est généralement autour de 150% ou 99%, mais jamais entre

2

Je voudrais mettre à jour toute personne venant ici au fait que toutes les réponses, et en particulier RocketSurgeon, m'a aidé à résoudre mon problème dans le même sens. J'ai dû télécharger les communs httpclient (hérité 3.1), la journalisation et le codec avant que mes problèmes aient été résolus.

À noter également; En utilisant Eclipse, j'ai dû extraire les fichiers .jar et les importer dans Buildpath en utilisant "add library". N'a pas fonctionné avec seulement l'ajout de fichier .zip.

Questions connexes