Fehlermeldung beim Einbinden des HttpClients

Status
Nicht offen für weitere Antworten.

JRookie

Aktives Mitglied
Hallo zusammen,
ich möchte per Java Programm im Internet navigieren und mit der POST Methode mich irgendwo einloggen und Daten abholen .... bin echt ziemlich am Anfang.
Habe hier gelesen man soll den httpClient von Apache dazupacken. Habe die zip Datei gedownloaded und in einem Verzeichnis entpackt. Habe hier irgendwo gefunden, dass man die .jar Datei in den Projekt Properties angeben muß.
Toll, meine Klasse kennt nun die imports und hat nichts gegen

HttpClient client = new HttpClient ();

Nur zur Laufzeit gibt's den Fehler

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:66)
at CHCE.main(CHCE.java:30)

Das muß was leichtes sein... Wollt ihr den ganzen Code sehen ?

Code:
      import java.io.IOException;
//	jo, da braucht man wohl Apache für ....
	      import org.apache.commons.httpclient.HttpClient;
	   
	      import org.apache.commons.httpclient.HttpException;
	  
	      import org.apache.commons.httpclient.cookie.CookiePolicy;
	  
	      import org.apache.commons.httpclient.methods.PostMethod;

	      
	      public class CHCE {   



	          /**
	  20.
	           * @param args
	  21.
	           * @throws IOException
	  22.
	           * @throws HttpException
	  23.
	           */   
	
	          public static void main(String[] args) throws Exception {
	
	       
	 
	              HttpClient client = new HttpClient ();
	
	              client.getHostConfiguration().setHost("www.tutorials.de", 80, "http");
	
	              client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

	 
	              PostMethod postMethod = new PostMethod("/forum/login.php?do=login");
	 
	              postMethod.addParameter("vb_login_username", "XYZ");
	 
	              postMethod.addParameter("vb_login_password", "ABC");
	
	              postMethod.addParameter("do", "login");
	 
	              postMethod.addParameter("s", "XXXXXXXXXXX");
	 
	              postMethod.addParameter("vb_login_md5password", "");
	
	              postMethod.addParameter("vb_login_md5password_utf", "");
	 
	       
	
	              client.executeMethod(postMethod);
	
	       
	 
	              System.out.println(postMethod.getResponseBodyAsString());
	 
	          }
	
	      } 

[\code]
Kann mir einer helfen ????
Vielen Dank im voraus !!
JRookie
 
Der HttpClient hängt wohl vom Apache Logging-Projekt ab. Da ist, glaube ich, bei den Jakarta Commons versteckt.

mpG
Tobias
 
Hallo Tobias,

danke für die Antwort, aber was heißt:
"Der HttpClient hängt wohl vom Apache Logging-Projekt ab. Da ist, glaube ich, bei den Jakarta Commons versteckt. "

Ich habe mir den Apache Http Server 2.2 geholt, der läuft auch ... tut aber nix !
Bei den Diensten habe ich kein "Logging(wasauchimmer)" gefunden ...??
Und was sind die Jakarta Commons ??? Ein Teil vom Apache server oder was ???

Ratlos
JRookie
 
Ok, Apache Commons_logging geholt, im Ordner unter meinem Projekt ausgepackt ...
Irgendwo gibts auch die fehlende Klasse LogFactory. Wie binde ich die jetzt dazu?
Es gibt keine .jar Datei.
Beim HttpClient habe ich ja die .jar Datei bei den Properties in der libary Abteilung dazu getan, wie muß ich das jetzt bei den Klassen machen??
Kann ich nicht irgendwo das übergeordnete Verzeichnis angeben und gut ist ??
Bitte zeigt mir den Weg ...
JRookie
 
1. Ja,ne, gut .. also auspepackt hab ich den .zip file unter meinem java Ordner

2. es gibt wirklich keinen .jar file innerhalb dieses .zip files, wohl aber Klassen, also .java Dateien.
Nochmal die Frage :
wohin mit dem Pfad ?? Kann ich nicht den übergeordneten Ordnernamen also hier jetzt
F:\Entwicklung\Java\commons-logging-1.1.1-src angeben, unter dem sich viele weitere Ordner verstecken. In irgendeinem steht dann dir fehlende Klasse LogFactory.
Was heißt "müssen in den Classpath" ?? Ich benutze eclipse. Geht das über
rechterMausklick auf Project, Properties, Java Build Path, Libraries ???
Ich hier bei "Add external jars" einfach den ganzen .zip file angegeben, weil er zip oder jar als extension haben will.

Die Fehlermeldung ist aber immer noch dieselbe

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:66)
at CHCE.main(CHCE.java:30)

Ich such nochmal eine .jar Datei im zip file.
Wat en Hantier !!
JRookie
 
src = source = quellen

Du hast das falsche Packet heruntergeladen.

Lade das richtige runter, nicht die Quellen sondern die kompilierten jars(binär), kopiere die jars in dein Projekt und füge sie dem Build Path hinzu.
Solltest nicht einfach alle dateien in dein Projekt entpacken, nur die commons-logging-x.x.x.jar.
 
Ok, super, das hat jetzt andere Fehlermeldungen gebracht:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException
at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:220)
at org.apache.commons.httpclient.methods.ExpectContinueMethod.<init>(ExpectContinueMethod.java:93)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.<init>(EntityEnclosingMethod.java:119)
at org.apache.commons.httpclient.methods.PostMethod.<init>(PostMethod.java:106)
at CHCE.main(CHCE.java:37)

So, und die beziehen sich auf den Httpclient. Das könnte bedeuten, dass ich auch hier wohl besser die binaries rüberhole, ne ??!
Ja sorry für die Mühe ....
JRookie
 
So,

jetzt musst du dasselbe nochmal für commons codec machen, und falls der noch Abhängigkeiten (dependencies) hat, für diese dann noch mal usw.. 🙂
 
Jo, super, die Fehlermeldungen werden weniger.
Das Programm liefert tatsächlich einen Output, der dem Programmcode entsprechen könnte. Vorneweg noch die Warnung:
05.04.2008 17:09:24 org.apache.commons.httpclient.HttpMethodBase getResponseBody
WARNUNG: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.

Naja, sieht aber schon gut aus!
Ich brauchte hier aber den httpclient als binary nicht nochmal downloaden. Erledigt die .jar Datei im .src Paket das übersetzen der Klassen, oder was ? Ich hab echt wenig Ahnung was da passiert ... Gibt's eine Empfehlung für ne gute Doku ?
Vielen Dank erst mal !!!!
JRookie
 
Die Apache Foundation liefert eigentlich zu allen Projekten eine ausführliche Javadoc mit. Zu Commons-Projekten gibt es das Buch "Jakarta Commons Cookbook" (englisch), welches in kleinen "Wie mach ich X?"-Rezepten einen guten Überblick über die einzelnen Subprojekte gibt.

Die src-Pakete enthalten die Quellcodes, aber sonst nichts, wenn du die Projekte benutzen willst, mußt du die kompilierten (bin) Pakete runterladen.

mpG
Tobias
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben