Avatar billede rabitjosph Juniormester
18. december 2005 - 08:12 Der er 17 kommentarer og
1 løsning

Grafisk problem

Hej
Med dette her lille stykke kode, får jeg den her fejlmeddelse.
Exception in thread "main" java.lang.NoSuchMetodError: main

Jeg tror det er noget med at den ikke kan finde det program den skal bruge

Forklaringen du giver skal helst være skåret ud i pap,
da jeg ikke er en ørn i nu.


import java.awt.*;

public class tegne extends Frame
{
  public void paint(Graphics g)
  {
    // Herunder referer g til et Graphics-objekt man kan tegne med
    g.drawLine(0,0,50,50);

    g.fillOval(5,20,300,30);

    g.setColor(Color.GREEN);

    g.drawString("Hej grafiske verden!",100,40);
  }
}
Avatar billede mikkelbm Nybegynder
18. december 2005 - 09:18 #1
For at køre et program, skal du have en main metode:

import java.awt.*;

public class tegne extends Frame
{
  public void paint(Graphics g)
  {
    // Herunder referer g til et Graphics-objekt man kan tegne med
    g.drawLine(0,0,50,50);

    g.fillOval(5,20,300,30);

    g.setColor(Color.GREEN);

    g.drawString("Hej grafiske verden!",100,40);
  }

  public static void main (String[] args)
  {
    new tegne ().setVisible (true);
  }
}
Avatar billede mikkelbm Nybegynder
18. december 2005 - 09:19 #2
Main metoden er den metode, som java leder efter, når du eksekverer en klasse. Og denne metode fortæller hvordan du ønsker at starte dit program. I dit tilfælde ønsker du at vise en Frame, hvor du tegner noget på - derfor skal du oprette en ny instans af den klasse og kalde metoden setVisible (true), så framen ved at den skal vises rent grafisk.
Avatar billede mikkelbm Nybegynder
18. december 2005 - 09:23 #3
I øjeblikket har din Frame ikke en størrelse, det kan du sætte ved at lave en constructor:

import java.awt.*;

public class tegne extends Frame
{   
  public tegne ()
  {
      setSize (400, 400);
  }
 
  public void paint(Graphics g)
  {
    // Herunder referer g til et Graphics-objekt man kan tegne med
    g.drawLine(0,0,50,50);

    g.fillOval(5,20,300,30);

    g.setColor(Color.GREEN);

    g.drawString("Hej grafiske verden!",100,40);
  }
 
  public static void main (String[] args)
  {
      new tegne().setVisible(true);
  }
}
Avatar billede mikkelbm Nybegynder
18. december 2005 - 09:23 #4
Og et svar - hvis det var brugbart.
Avatar billede rabitjosph Juniormester
18. december 2005 - 09:31 #5
Hej Mikkelbm

Tak for det brugbar svar, lige et lille tillægs spørgsmål

Når jeg køre din kode, starter den først DOS "ligende vindue op hvor der står
Java på blå bjælke" og derefter et windue hvor jeg kan se "Hej grafisk verden"

Hvorfor starter den først det dos program op ? og skal den det ?
Avatar billede mikkelbm Nybegynder
18. december 2005 - 09:35 #6
Hvordan starter du programmet?
Avatar billede rabitjosph Juniormester
18. december 2005 - 09:39 #7
Jeg arbejder med JCreator, og køre den derfra.

Jeg kan ikke få det til at virke ved at bruge Start og Kør, da jeg
ikke ved hvordan stigen skal skrives
Avatar billede mikkelbm Nybegynder
18. december 2005 - 09:46 #8
I JCreator vil du, så vidt jeg ved, altid få den dos-skærm.
Avatar billede rabitjosph Juniormester
18. december 2005 - 10:17 #9
Hvis jeg skal køre den ude fra Start, Kør
ved du hvad jeg skal skrive som sti

C:\.........
Avatar billede mikkelbm Nybegynder
18. december 2005 - 10:22 #10
Så skal du skrive:

javaw -cp "sti_til_der_hvor_dit_program_ligger" tegne
Avatar billede rabitjosph Juniormester
18. december 2005 - 12:02 #11
Jeg har skrevet:
javaw -cp C:\Program Files\Xinox Software\JCreatorV3LE\Projects\HejVerden
\classes tegne

Erro: Could not find the main class. Program will exit.

Jeg ved ikke hvad jeg laver galt i stien ?
Avatar billede mikkelbm Nybegynder
18. december 2005 - 12:36 #12
Det er nok fordi du har mellemrum i din sti. Prøv:

javaw -cp "C:\Program Files\Xinox Software\JCreatorV3LE\Projects\HejVerden
\classes" tegne
Avatar billede rabitjosph Juniormester
18. december 2005 - 16:20 #13
Nej det virker ikke for mig, skal der være "" som du har sat ind, men jeg har prøvet at fjerne dem og det hjalp heller ikke.

Hvordan overføre jeg de 60 point ?, har prøvet men ikke lykkes

eller har du fået dem ?
Avatar billede mikkelbm Nybegynder
18. december 2005 - 16:23 #14
Points er overført :)

Ja, hvis der er mellemrum, så skal der være "" om:

javaw -cp "C:\Program Files\Xinox Software\JCreatorV3LE\Projects\HejVerden\classes" tegne

Ovenstående burde virke hvis du kopierer det direkte ind i "Kør.."
Avatar billede rabitjosph Juniormester
18. december 2005 - 16:29 #15
Den komme med følgende fejl

Could not find the main class. Program will exit.
Avatar billede rabitjosph Juniormester
18. december 2005 - 16:30 #16
I fejlmeddelsen står der i den blå bjælke

Java Virtual Machine Launcher
Avatar billede mikkelbm Nybegynder
18. december 2005 - 16:34 #17
Hvis jeg kører følgende hos mig, starter programmet op:

javaw -cp "E:\Dokumenter\Programmering\Diverse\Eksperten - kode\Frame" tegne

Så du skal sikre dig, at stien er 100% korrekt og at din klasse stadig hedder "tegne"
Avatar billede rabitjosph Juniormester
18. december 2005 - 16:46 #18
Ja, nu virker det, hvad jeg havde lavet af fejl fandt jeg ikke ud af,
så mange tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester