PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: VERZWEIFLE AN main "java.lang.NoClassDefFoundError"


beos
2005-09-02, 12:48:35
Grüße Euch,

Obwohl in diverse Tip bezüglich der CLASSPATH Variable befolgt habe; bekomme ich beim Ausführen meines Simple Java Programms immer:

"Exection in thread "main" java.lang.NoClassDefFoundError: "

Auch wenn ich mit der Option -cp diverse Pfade wie:

"."
"c:\j2sdk1.4.1_07"
"c:\j2sdk1.4.1_07\bin"
"c:\j2sdk1.4.1_07\lib"

angebe.....immer das gleiche.....

So langsam würde ich doch gerne mal mein Java Prog laufen sehen...grrrrrr


(Verzweifelt Modus an) Habt ihr irgendwelche Tips für mich ...

Senior Sanchez
2005-09-02, 12:53:41
Grüße Euch,

Obwohl in diverse Tip bezüglich der CLASSPATH Variable befolgt habe; bekomme ich beim Ausführen meines Simple Java Programms immer:

"Exection in thread "main" java.lang.NoClassDefFoundError: "

Auch wenn ich mit der Option -cp diverse Pfade wie:

"."
"c:\j2sdk1.4.1_07"
"c:\j2sdk1.4.1_07\bin"
"c:\j2sdk1.4.1_07\lib"

angebe.....immer das gleiche.....

So langsam würde ich doch gerne mal mein Java Prog laufen sehen...grrrrrr


(Verzweifelt Modus an) Habt ihr irgendwelche Tips für mich ...


Den Classpath vom JDK brauchste in der Regel nicht zu importieren, wenn du den jdk Compiler javac verwendest.
Du musst aber eventuell den Classpath angeben, wo sich dein Java Programm befindet.

Wenn ich z.b. die Klasse Hello (kein package angegeben) ausführen will, gehe ich meist in das Verzeichnis von Hello und rufe dann folgendes auf.

java -cp . Hello

und dann klappt das :)

beos
2005-09-02, 12:57:04
Grüß Dich,

also wenn (im Pfad der class Datei) ich

java -cp . Fenster

eingeben

dann bekomme ich außer

Exection in thread "main" java.lang.NoClassDefFoundError:

noch zig andere java.lang.Classloader

Fehlermeldungen

-> so klappt das leider bei mir nicht

Senior Sanchez
2005-09-02, 13:07:18
Grüß Dich,

also wenn (im Pfad der class Datei) ich

java -cp . Fenster

eingeben

dann bekomme ich außer

Exection in thread "main" java.lang.NoClassDefFoundError:

noch zig andere java.lang.Classloader

Fehlermeldungen

-> so klappt das leider bei mir nicht


Du hast die Klasse auch richtig kompiliert, ne? Kannste mal deinen Source davon posten?

Gast
2005-09-02, 13:08:19
Wie lautet der Name deiner Klassendatei und kannst Du vielleicht mal die Klasse (ohne Methodenrümpfe) inklusive der Imports posten?

beos
2005-09-02, 13:09:19
Du hast die Klasse auch richtig kompiliert, ne? Kannste mal deinen Source davon posten?

Aber klar doch :smile:



package Fenster;

import java.awt.*;


public class Fenster extends Frame
{

public Fenster()
{

}
public static void main(String[] args)
{
Fenster hauptfenster = new Fenster();
hauptfenster.setSize(300,300);
hauptfenster.setLocation(100,100);
hauptfenster.setTitle("MSCRM Hardware DatenBank");
hauptfenster.show();
}

}

Trap
2005-09-02, 13:10:28
java -cp . Fenster

Die Klasse dazu ist
public class Fenster {
? Dateiname ist "Fenster.class"?

beos
2005-09-02, 13:18:06
Die Klasse dazu ist
public class Fenster {
? Dateiname ist "Fenster.class"?


Ja - Source heist:

Fenster.java

Binary:

Fenster.class

oliver123
2005-09-02, 13:22:42
Du hast das Package "Fenster" genannt. Du solltest es mind. "fenster" nennen wenn Du es Sun-konform machen möchtest.

Du bist im falschen Verzeichnis. Du musst ein Verzeichnis hoch und die Datei über java -cp . Fenster.Fenster aufrufen. (Das Directory Fenster muss es geben da Du es als Package angelegt hast) Packagename.Klasse ist die Notation

Senior Sanchez
2005-09-02, 13:26:43
Kleiner Tipp. Als Anfänger sollte man nicht sofort mit packages anfangen, das verwirrt nur.
Aber wie schon gesagt, musst du in das oberste Verzeichnis gehen und dann dort
java -cp . Fenster.Fenster aufrufen.

Im Grunde wird der Klassenname auch durch sein package mitbestimmt ;)

beos
2005-09-02, 13:53:54
Super - es GEHT !

Vielen lieben Dank an Euch beide - der böse Java Interpreter könnte ja auch mal
informative Fehlermeldungen ausgeben.... :wink:

Senior Sanchez
2005-09-02, 16:42:07
Super - es GEHT !

Vielen lieben Dank an Euch beide - der böse Java Interpreter könnte ja auch mal
informative Fehlermeldungen ausgeben.... :wink:

Wenn du nen bissl weiter bist mit Java, wirst du merken wie informativ das ist! Java hat aus meiner Sicht eines der besten Fehlerberichtssysteme.

Trap
2005-09-02, 18:20:44
Wenn du nen bissl weiter bist mit Java, wirst du merken wie informativ das ist! Java hat aus meiner Sicht eines der besten Fehlerberichtssysteme.
Hmm, was kennst du sonst an Programmiersprachen (bzw. Implementierungen)? Java ist in der Hinsicht sicher besser als C/C++, das ist aber auch keine große Kunst.

Eiffel oder Lisp sind im Bereich Fehlermeldungen sicher nicht schlechter als Java.

HellHorse
2005-09-02, 19:38:42
Wieder mal ein Beispiel dafür, dass die Kommandozeile so ziemlich die schlechteste Möglichkeit ist, in Java einzusteigen. :rolleyes:

Eiffel oder Lisp sind im Bereich Fehlermeldungen sicher nicht schlechter als Java.
Und Smalltalk haut die Scheisse raus. Ich sage nur resumable exceptions.

Aber ansonsten ist das bei Java eigentlich ganz ok gelöst zumal man den Stacktrace hat und je nach dem sogar die Sourcezeile. Man muss sich nur die Mühe machen und die Fehler lesen. :rolleyes: Auch spuckt der javac imho brauchbare Fehlermeldungen aus und i.A. bloss eine pro Fehler. Nicht so wie der gcc.

Senior Sanchez
2005-09-03, 11:34:04
Aber ansonsten ist das bei Java eigentlich ganz ok gelöst zumal man den Stacktrace hat und je nach dem sogar die Sourcezeile. Man muss sich nur die Mühe machen und die Fehler lesen. :rolleyes: Auch spuckt der javac imho brauchbare Fehlermeldungen aus und i.A. bloss eine pro Fehler. Nicht so wie der gcc.

Genau das meinte ich.

Hmm, ich kenne noch Delphi, Pascal, microGPSS und naja, die C/C++ Fraktion und ich finde von denen kommt keiner an Java ran.