java.lang.NoSuchMethodError
lima-city → Forum → Programmiersprachen → Java
beitrag
compiler
container
editor
fehler
gruss
hauptfenster
import
ketchup
kommandozeile
layout
main
meldung
methode
orange
pfad
quelltext
rechteck
smilie
verzeichnis
-
Also ich lerne jetzt schon seit geraumer Zeit Java mit so einem Buch, in dem z.B. Codebeispiele stehen.
In dem Kapitel in dem ich grad bin geht um Zeichen-Panels und da war folgendes Codebeispiel dabei:
import java.awt.*;
import javax.swing.*;
class MeinZeichenPanel extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.orange);
g.fillRect(20, 50, 100, 100);
}
}
Doch als ich das Programm abgeschrieben und mit meinem Editor(\"Ecplipse\") ausgeführt habe, kam plötzlich eine Meldung:\"Fatal exception occured. Programm will exit\" und in der Ausgabeleiste hat mir das Programm \"java.lang.NoSuchMethodError: main\" angezeigt.
Meine Frage ist, ob es sein könnte, dass ich den Code falsch abgeschrieben hab(ich habs aber 1000-mal nachgeprüft), oder ob der Fehler an was anderem liegt.
PS.: Die Antwort bitte, wenn es möglich wäre, für einen Anfänger(also für mich) verständlich schreiben! Danke!
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Eigentlich schon! So stehts auf jeden fall in meinem Buch!
Und was soll ich dann in die Main-Methode reinstecken? Die paintComponent()-Methode darf/kann ja nur(meines Wissens) vom System selber und nicht vom Benutzer aufgerufen werden. -
Du solltest in der Mainmethode dein Fenster konstruieren.
public static void main(String[] args) {
MeinZeichenPanel frame = new MeinZeichenPanel();
frame.setLocation(100, 100);
frame.setVisible(true);
}
EDIT:
Und das sollte dann meineswissens noch so aussehen:
import java.awt.*; import javax.swing.*; class MeinZeichenPanel extends JPanel { public void paintComponent(Graphics g) { g.setColor(Color.orange); g.fillRect(20, 50, 100, 100); } public static void main(String[] args) { MeinZeichenPanel frame = new MeinZeichenPanel(); frame.setLocation(100, 100); frame.setVisible(true); } }
Beitrag geändert: 20.9.2007 19:58:06 von ketchupfleck -
Aber wenn ich das jetzt ausführe passiert irgendwie garnichts.
import java.awt.*;
import javax.swing.*;
class MeinZeichenPanel extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.orange);
g.fillRect(20, 50, 100, 100);
}
public static void main(String[] args) {
MeinZeichenPanel frame = new MeinZeichenPanel();
frame.setLocation(100, 100);
frame.setVisible(true);
}
}
PS.: Es kann sein, dass ich heut nicht mehr antworten kann. Hab morgen Früh Schule.
-
import java.awt.*; import javax.swing.*; class MeinZeichenPanel extends JPanel { public void paintComponent(Graphics g) { g.setColor(Color.orange); g.fillRect(20, 50, 100, 100); } } class Hauptfenster extends JFrame { public Container cp = getContentPane(); public FlowLayout layout = new FlowLayout(); public MeinZeichenPanel zp = new MeinZeichenPanel(); Hauptfenster(){ super(); cp.setLayout(layout); setSize(300,300); setBackground(Color.WHITE); zp.setBounds(1,1,298,298); cp.add(zp,layout.CENTER); } public static void main(String[] args) { Hauptfenster frame = new Hauptfenster(); frame.setLocation(100, 100); frame.setVisible(true); } }
Ich hab da mal kurz wa für dich gemacht. Wenn du noch fragen hast einfach per PN. Ich konnte es leider nicht ausprobieren da mein Interpreter nicht tut, aber der Compiler schluckts ohne Probleme.
mfg Ketchup -
Hallo,
leider läfut das Beispiel von ketchupfleck nicht so recht bei mir. Deshalb hier noch ein Vorschlag. Der Kernpunkt ist, dass du ein Frame brauchst in welchem dein JPanel dargestellt werden kann.
import java.awt.*;
import javax.swing.*;
class MeinZeichenPanel extends JPanel
{
protected void paintComponent( Graphics g )
{
super.paintComponent( g );
g.setColor(Color.orange);
g.fillRect(20, 50, 100, 100);
}
}
class ZeichneRechteck
{
public static void main( String[] args )
{
JFrame f = new JFrame(\"MeinZeichenPanel\");
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.setSize( 150, 200 );
f.add( new MeinZeichenPanel() );
f.setVisible( true );
}
}
Hier noch mehr Infos:
http://www.galileocomputing.de/openbook/javainsel6/javainsel_15_001.htm
Gruß
Manni
Beitrag geändert: 20.9.2007 23:31:59 von bandi999 -
Also ersmal danke!
Aber trotzdem immernoch: Wenn ich des Programm ausführe komm wieder die selbe Meldung. Ich glaub ich shau mir mal den Editor genauer an den ichs ausführen lass, vllt liegt ja daran der Fehler.(und des Smilie hab natürlich vor dem ausführen weggemacht!)
-
Hallo,
um ehrlich zu sein, empfehle ich dir zum Einstieg nicht unbedingt Eclipse. Es ist sicher eine tolle IDE aber doch sehr gewöhnungsbedürftig.
Sofern java SDK vernünftig auf deinem Rechner installiert ist (und das brauchst du auch damit Eclipse läuft), gehe auf die Kommandozeile. Lege eine neue Texdatei an und benenne sie um in rechteck.java und kopiere den Quelltext von mir hinein.
Gehe auf der Kommandozeile in das Verzeichnis mit dieser Datei und gib
javac rechteck.java
ein. Du erhältst zwei zusätzliche Dateien im gleichen Verzeichnis:
ZeichneRechteck.class und MeinZeichenPanel.class.
Gib auf der Kommandozeile ein:
java ZeichneRechteck
und das Programm sollte laufen.
Falls die Befehle javac (=Compiler) und java nicht funktionieren, sind evtl. die Pfade nicht eingetragen.
Gruß
Manni
Beitrag geändert: 21.9.2007 17:00:13 von bandi999 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage