Avatar billede petan Nybegynder
27. juni 2006 - 12:39 Der er 17 kommentarer og
1 løsning

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

Hej,

Jeg har installeret jdk1.5.0_07 i mappen C:\Programmer\Java\jdk1.5.0_07

Hvis jeg i dos taster "javac" får jeg hjælpemulighederne frem, så det virker i hvert fald. Hvis jeg prøvet at kompilere en fil, får jeg meddelsen: error: cannot read: [navn på fil]. Hvis jeg prøver at eksekvere en fil der er kompileret får jeg fejlen: Exception in thread "main" java.lang.NoClassDefFoundError:

Jeg har på fornemmelsen, at dethar noget at gøre med opsætningen af disse miløvariabler: CLASSPATH, PATH og evt. JAVA_HOME. Skal de indsættes i brugervariabler eller systemvariabler? Hvad skal de pege på?

På forhånd tak!
Avatar billede mikkelbm Nybegynder
27. juni 2006 - 12:42 #1
Prøv lige at give den eksakte kommando du compiler med.


Hvis du får hjælpemenuen frem, så har det ikke noget med PATH eller de andre at gøre.
Avatar billede petan Nybegynder
27. juni 2006 - 12:51 #2
Jeg skriver "javac [navn på fil].java" i mappen som filen ligger i. Selve kompileringen virkede i øvrigt inden jeg begyndte at pille ved miløvariablerne.
Avatar billede mikkelbm Nybegynder
27. juni 2006 - 12:58 #3
Hmm...

Hvad hvis du skriver:

javac -cp . [navn på fil].java

?
Avatar billede petan Nybegynder
27. juni 2006 - 13:04 #4
Sorry, jeg kan godt kompilere - det er der ikke noget problem med.
Avatar billede mikkelbm Nybegynder
27. juni 2006 - 13:08 #5
Ahh - okay.

Så prøv når du kører programmet:

java -cp . sti.til.din.MainClass
Avatar billede petan Nybegynder
27. juni 2006 - 13:34 #6
C:\java>java -cp hello
Usage: java [-options] class [args...]
          (to execute a class)
  or  java [-options] -jar jarfile [args...]
          (to execute a jar file)

where options include:
    -client      to select the "client" VM
    -server      to select the "server" VM
    -hotspot      is a synonym for the "client" VM  [deprecated]
                  The default VM is client.

    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
                  A ; separated list of directories, JAR archives,
                  and ZIP archives to search for class files.
    -D<name>=<value>
                  set a system property
    -verbose[:class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -version:<value>
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-search | -jre-no-restrict-search
                  include/exclude user private JREs in the version search
    -? -help      print this help message
    -X            print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions
    -esa | -enablesystemassertions
                  enable system assertions
    -dsa | -disablesystemassertions
                  disable system assertions
    -agentlib:<libname>[=<options>]
                  load native agent library <libname>, e.g. -agentlib:hprof
                    see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument
Avatar billede _carsten Nybegynder
27. juni 2006 - 13:39 #7
Husk - der er forskel på store og små bogstaver

Hvad med
C:\java>java -cp . Hello
Avatar billede mikkelbm Nybegynder
27. juni 2006 - 13:44 #8
Ja, du mangler punktum. Det var ikke en fejl jeg havde sat det der ;)
Avatar billede petan Nybegynder
27. juni 2006 - 13:53 #9
Nu virker det! Hvorfor skal punktum og -cp med? Er der noget jeg kan gøre for at undgå dette?
Avatar billede mikkelbm Nybegynder
27. juni 2006 - 14:00 #10
-cp <class search path of directories and zip/jar files>

Du fortæller Java hvor den skal lede efter dine klasser. Punktum indikerer at den skal lede i den mappe du står i.
Avatar billede _carsten Nybegynder
27. juni 2006 - 14:00 #11
Det er for at fortælle java hvor den skal begynde at lede efter class og andre resource filer.

. (Punktum) indikerer at den skal starte i "C:\java\"

Det kunne også være .;c:\etAndetSted\  = "C:\java\" og "c:\etAndetSted\"

http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/classpath.html
Avatar billede _carsten Nybegynder
27. juni 2006 - 14:00 #12
:)
Avatar billede mikkelbm Nybegynder
27. juni 2006 - 14:01 #13
Vi er da enige :)
Avatar billede petan Nybegynder
27. juni 2006 - 14:09 #14
Der er stadig noget der ikke virker. Hvis jeg kompilerer denne fil:
----------------------------------------------
import java.awt.*;

public class GrafiskVindue 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);
    }
}
------------------------------------------

der som udgangpunkt hedder: GradiskVindue.java og som derefter bliver til GrafiskVindue.class, kan jeg heller ikke køre den:

C:\java>java -cp . GrafiskVindue
Exception in thread "main" java.lang.NoSuchMethodError: main
Avatar billede mikkelbm Nybegynder
27. juni 2006 - 14:17 #15
Du mangler din mainmetode:

public static void main (String[] args)
{
  new GrafiskVindue().setVisible (true);
}


Smid den ind i din klasse.
Avatar billede petan Nybegynder
27. juni 2006 - 14:32 #16
Tak for hjælpen begge! Læg også et svar, carsten, hvis du vil have point.
Avatar billede _carsten Nybegynder
27. juni 2006 - 15:19 #17
Det må være mikkelbm som skal have point, jeg fremhævede bare det punktum.
Avatar billede petan Nybegynder
27. juni 2006 - 15:22 #18
ok, lukker.
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