# java.lang.NoClassDefFoundError



## Sadret (6. Nov 2013)

Hallo,

ich bekomme folgende Fehlermeldung, wenn ich meine Klasse starte:

```
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/params/HttpParams
	at main.Handler.main(Handler.java:26)
Caused by: java.lang.ClassNotFoundException: org.apache.http.params.HttpParams
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 1 more
```

Dies ist die Klasse:

```
package main;

import java.awt.Desktop;
import java.io.ByteArrayInputStream;
import java.net.URL;

import javax.swing.JOptionPane;

import com.dropbox.client2.DropboxAPI;
import com.dropbox.client2.DropboxAPI.Entry;
import com.dropbox.client2.session.AccessTokenPair;
import com.dropbox.client2.session.AppKeyPair;
import com.dropbox.client2.session.RequestTokenPair;
import com.dropbox.client2.session.Session.AccessType;
import com.dropbox.client2.session.WebAuthSession;
import com.dropbox.client2.session.WebAuthSession.WebAuthInfo;

public class Handler {
	private static final String APP_KEY = "u4pu2q2cqpm1odb";
	private static final String APP_SECRET = "30yjd9owx0p29hk";
	private static final AccessType ACCESS_TYPE = AccessType.APP_FOLDER;
	private static DropboxAPI<WebAuthSession> mDBApi;

	public static void main(String[] args) throws Exception {
		AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
		WebAuthSession session = new WebAuthSession(appKeys, ACCESS_TYPE);
		WebAuthInfo authInfo = session.getAuthInfo();

		RequestTokenPair pair = authInfo.requestTokenPair;
		String url = authInfo.url;

		Desktop.getDesktop().browse(new URL(url).toURI());
		JOptionPane.showMessageDialog(null, "Press ok to continue once you have authenticated.");
		session.retrieveWebAccessToken(pair);

		AccessTokenPair tokens = session.getAccessTokenPair();
		System.out.println("Use this token pair in future so you don't have to re-authenticate each time:");
		System.out.println("Key token: " + tokens.key);
		System.out.println("Secret token: " + tokens.secret);

		mDBApi = new DropboxAPI<WebAuthSession>(session);
		System.out.println();
		System.out.print("Uploading file...");
		String fileContents = "Hello World!";
		ByteArrayInputStream inputStream = new ByteArrayInputStream(fileContents.getBytes());
		Entry newEntry = mDBApi.putFile("/testing.txt", inputStream, fileContents.length(), null, null);
		System.out.println("Done. \nRevision of file: " + newEntry.rev);
	}
}
```

Ich habe schon ausführlich gegoogelt, aber leider verstehe ich kaum etwas von dem, was in Java außerhalb meines Codes passiert.
Kann mir bitte jemand in einfachen Worten erklären, wie ich das lösen kann?
Vielen Dank!


----------



## BuddaKaeks (6. Nov 2013)

Die Datei org/apache/http/params/HttpParams, bzw. die apache-jar-Datei ist nicht in deinem Classpath


----------



## Sadret (6. Nov 2013)

Woher bekomme ich die Datei?


----------



## BuddaKaeks (6. Nov 2013)

Du musst die Jar Datei ja mal aus dem Internet oder so gedownloaded haben, sonst kannst du die benötigte sicher
auf apache.org bekommen. Ich kann dir keinen genauen Link schicken, da Apache viele Jars und so anbietet (Frameworks und so), und ich nicht weiß, welche du benötigst.
Aber wenn du die jardatei hast, kannst du sie über eclipse rechtsclick auf die datei -> buildpath -> add to buildpath in dein Projekt einbinden.


----------



## Sadret (6. Nov 2013)

Habe meinen Fehler jetzt gefunden: ich hatte auf der Apache-Seite die falsche Datei ohne die Binaries geladen, da war dann keine .jar dabei.

Für alle, die auch danach suchen:
Auf dieser Seite (Apache HttpComponents - HttpComponents Downloads) das Archiv unter dem Menüpunkt "Source" herunterladen.


----------



## BuddaKaeks (6. Nov 2013)

Für alle anderen, die einen NoClassDefFoundError nicht wegen classpath-problemen bekommen haben,
Das liegt dann daran, dass beim initialisieren einer statischen Variable eine RuntimeException oder ein Error geworfen wurde, und dieser dann vom ClassLoader als NoClassDefFound weitergeworfen wird.


----------

