Grafisches Programmieren/ java.lang.NoClassDefFoundError

dekoker

Grünschnabel
Hallo,

Ich wollte mich mal mit dem Programmieren von Grafiken beschäftigen und bin auf folgendes Beispielprogramm gestoßen:

Code:
import java.awt.*;

public class Frame
{   public static void main (String args[])
    {   Frame F=new Frame();
        F.setSize(300,300);
        F.setVisible(true);
    }
}

Beim Ausfürhen des Programms kommt dann aber die Fehlermeldung:

Exception in thread "main" java.lang.NoClassDefFoundError : Frame


Kann es sein das es am import java.awt.*; liegt?

Muss ich irgendetwas zusätzlich installieren?


Ich schreibe mit JOE und hab den jdk 1.5


Ich hoffe, ihr könnt mir helfen.
Danke im Voraus

mfg dekoker
 
Hi dekoker,

Geh ich recht in der Annahme, dass du gerade mit Java angefangen hast?

Das Problem bei deinem Code ist, dass deine Klasse Frame heißt. Du möchtest aber gerne die (bereits existierende Klasse) java.awt.Frame benutzen. Entweder du benennst deine Klasse einfach um oder du erbst von Frame:

Einfaches benutzen der Klasse geht so:
Java:
import java.awt.*;

public class My_Frame

{   public static void main (String args[])
    {   Frame f=new Frame();
        f.setSize(300,300);
        f.setVisible(true);
    }

}


Das ganze über Vererbung geht so:
Java:
import java.awt.*;

public class My_Frame extends Frame

{   public static void main (String args[])
    {   My_Frame f=new My_Frame();
        f.setSize(300,300);
        f.setVisible(true);
    }

}

Wenn du wirklich grad erst angefangen hast zu Programmieren, würde ich vllt. nicht mit GUIs anfangen. Schau mal hier im Java Forum gibt es einige Linklisten mit guten Tuts.

MfG
Daniel
 
Joa hab dieses Schuljahr mit Informatik angefangen und mich selbst weitergebildet und wollte jetzt mit Tutorials eine bisschen das Grafische lernen, also nur mit so kleinen Fenstern, nichts wirklich besonderes.

Hab das jetzt so gelöst:
Code:
import java.awt.*;

       public class My_Frame extends Frame
       { 
       	 public static void main (String args[])
          {   Frame f=new Frame();
              f.setSize(300,300);
              f.setVisible(true);
          }
       }

allerdings bemängelt der Compiler folgendes:

compilerzf8.jpg


Was nun?
 
Hm, in deinem Beispiel hast du geschrieben "import java.awt.*;" ... das ist korrekt... aber auf der Grafik am Screen steht "import javax.java.awt.*;" ... klar, dass er das nicht findet.
 
Das hat mich auch gewundert, denn im Quelltext stand wirklich kein "x". Ich hab jedenfalls mal alle Programme die bei meinen Versuchen das hinzubekommen entstanden sind gelöscht und ein neues angelegt. Quelltext, wie eben und siehe da, compilen geht schonmal, aber beim Ausführen kommt das:

ausfuehrenzs4.jpg


liegt das i.wie an meiner Java-Version?
 
Hab das jetzt so gelöst:
Code:
import java.awt.*;

       public class My_Frame extends Frame
       { 
            public static void main (String args[])
          {   Frame f=new Frame();
              f.setSize(300,300);
              f.setVisible(true);
          }
       }

Das ist so allerdings doppelt gemoppelt. Wenn du "extends Frame" schreibst, dann erbt deine Klasse My_Frame von Frame. Das machst du normalerweise damit du - nennen wir's mal vereinfacht - die Funktionalität von Frame ausbauen kannst (nicht hauen, wegen der Erklärung, aber die Grundlagen von OOP zu erklären sprengt diesen Thread wahrscheinlich ;)). Bei deinem Quelltext benutzt du aber die Standartklasse "Frame" ohne von deiner Vererbung gebrauch zu machen. Das geht zwar (oder sollte zumindest gehen), macht aber keinen Sinn.

Was deinen Fehler angeht, kann ich dir aus der Entfernung auch nicht sagen woran das liegt. Wenn das log nicht so groß ist, kannst du es vielleicht mal als Text anhängen. Hast du denn mit deinem Java schon mal erfolgreich was compiliert und ausgeführt?

MfG
Daniel
 
Hallo zusammen ,

hab den Joe (Compiler programm) installiert
,
hab den datei ThApp.java compaliert aber kommt bei Dos fenster ein fehler meldung,


EXCEPTION IN THREAD "main" java.lang.NoClassDefFoundError : ThApp

Ich glaub muss auch die *.Class datei auch compilieren aber weiss nicht wie
haben sie vielleicht ein Idee?

bitte an mein Email Adresse antworten :
tarek.brakrim@inf.hs-anhalt.de
Gruss
 
Zurück