Besonderes NoClassDefFoundError:

Kale

Grünschnabel
Hallo,

danke im voraus schon mal an alle Helfenden.
Ich benutze Eclipse.
Ich habe folgendes Problem:

Ich habe eine communication.class diese hat ein Methode "DoIt" an die ein String übergeben wird. Diese Methode macht dann "etwas geheimnisvolles" und liefert mir einen String zurück.

Diese Classe will ich in meine Programme einbinden.

In Eclipse -importiere ich die Class Datei in den Projektordner "cla"
Über Projekt->Properties -> Java Build-Path-> add Class Folder-> füge ich den Ordner in dem nur die communication.class liegt hinzu.

PHP:
package test;

import cla.*;
public class geta {

	public static void main(String[] args) {

		communication a = new communication();
		System.out.println(a.DoIt("AAAAAA"));

	}
}

In Eclipse wird die Klasse erkannt und ich kann die Methode von a auswählen.
Es zeigt keine Fehler an!

Aber wenn ich das dann Starte kommt
"Exception in thread "main" java.lang.NoClassDefFoundError: communication
at test.geta.main(geta.java:8)"

Wieso?

Wäre sehr dankbar für Eure hilfe!
 
Hi
also bei mir zeigt Eclipse einen Fehler an wenn ich das so mache wie du.
WEnn ich Add Project mache und das andere Projekt zu meinem Build Path
hinzufüge kann ich auch auf meine Klassen zugreifen.

Benny
 
und wie bringst du die .class datei in das Projekt das du später hinzufügst?

ich habe ja keine java datei sondern nur die .class

habe es auch schon versucht aus der class eine jar zu machen und diese hinzuzufügen.
Da passierte das gleiche Eclipse hat keinen Fehler angezeigt. aber beim ausführen der selbe fehler
 
Zuletzt bearbeitet:
Also wenn ich nur den bin Ordner des anderen Projekts
im buildpath angebe ( mit add class folder )
kann er das bei mir auch auflösen und es funktioniert.

Du brauchst also den obersten Ordner der die package Struktur enthält.

Benny
 
Die classe die du einbindest, war die in einem package?

meine liegt in keinem. Ist das nen unterschied?
 
Ich glaub ich hab dich nicht ganz verstanden.

1.) Du hast ein Projekt in Eclipse.
2.) Du hast eine .class Datei die in keinem Eclipse Projekt liegt

Und du willst die compilierte Klasse in deinem Projekt nutzen

Dann gehst du den Weg wie du ihn schon beschrieben hast bis zu
-> add Class Folder
und klickst dann auf
-> Create new Class Folder

Dann gehst du in dein Workspace in das soeben erstellte Verzeichnis
und lest die .class Datei dort ab. Wenn diese in einem package liegt
dann muss auch dort die entsprechende Ordnerstruktur vorhanden sein.

Wenn du das gemacht hast einfach Projekt anwählen und auf F5 klicken.
Nun sollte alles ordnungsgemäs geladen sein und dein Projekt sollte laufen.

Benny
 
Die class darf in keinem Package liegen!

Genau das was du gesagt hast habe ich soeben getan

fehler.jpg

Jetzt kommt der Fehler.
 
AH jetzt gehtes

ABER:
also ich habe jetzt beide Dateien in dem "default package"
Dann kennen sie sich gegenseitig und machen alles was ich will.

hatte die class immer in einem Package drin obwohl sie das nicht sein durfte.

Weißt du zufälliger weise wie jetzt flgendes geht:

Die start.java liegt im Package Pack1.
die class im default package.
das defaultpackage kann ich in java ja schwer importieren. wie geht das?
 
Das default package zeigt Eclipse dann an wenn keine package
Struktur vorhanden ist. Sollte Eclipse also selber "anlegen/anzeigen" wenn
nichts vorhanden ist.
 
Die start.java liegt im Package Pack1.
die class im default package.
das defaultpackage kann ich in java ja schwer importieren. wie geht das?

Gar nicht. Daher sollte man Klassen nicht im Default-Package anlegen. Ganz abgesehen davon dass Klassen in Java groß geschrieben werden.
 
Zurück