JAVA: Exception in thread "main" java.lang.NoClassDefFoundEr

Pagina: 1
Acties:

  • ErikRo
  • Registratie: Juni 2001
  • Laatst online: 07-03 23:42
Exception in thread "main" java.lang.NoClassDefFoundError: \java\h01\beersong

Hoopvol begon ik aan mijn 2e opdracht uit "head first java" eerste programma wat ik moest checken op iets wat niet zou kloppen. Het zou beter kunnen maar moest wel werken.
Krijg ik deze medling, zou iets met het verkeerde path te maken kunnen hebben las ik ergens op een forum dus ik het path toegevoegd in xp.
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Java\jdk1.5.0_04\bin
geeft nog steeds dezelfde foutmelding.

Ik kan er echt niks geks aan vinden en mijn kennis is niet van dien aard dat ik er zelf uitkom. Iemand die ziet wat er niet klopt.

Ik execute met:
C:\Program Files\Java\jdk1.5.0_04\bin>java \java\h01\beersong

er staan in de java\h01, 2 bestanden: beersong.class en beersong.java

beerclass.java bevat:

public class beersong {
public static void main (String [] args) {
int beerNum = 99;
String word = "bottles";

while (beerNum > 0) {

if (beerNum == 1) {
word = "bottle"; // singulair, as in ONE bottle
}

System.out.println (beerNum + " " + word + " of beer on the wall");
System.out.println (beerNum + " " + word + " of beer.");
System.out.println ("Take one down");
System.out.println ("Pass it around.");
beerNum = beerNum -1;

if (beerNum > 0) {
System.out.println(beerNum + " " + word + " of beer on the wall");
} else {
System.out.println ("No more bottles of beer on the wall");
} // end else
} // end while loop
} // end main method
} //end class

"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant


Verwijderd

Geef eens het volledige path naar de class file op, en dan wel zonder de .class extension
dus java c:\blaat\java\h01\beersong oid.

Of zet gewoon de . in je CLASSPATH variable. Werkt ook prima. Dan moet je daarna gewoon naar de dir gaan waar je .class file staat en kun je hem als volgt starten:

C:\Program Files\Java\jdk1.5.0_04\bin\java beersong

  • Wolf87
  • Registratie: Juli 2004
  • Laatst online: 27-04 00:12
moet je niet in de map gaan staan waar beersong zich bevindt, want je hebt met het pad aangegeven waar hij moet zoeken naar java.exe, deze kan cmd dus altijd vinden, het programma wat je heb geschreven niet

  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 21-04 15:56
java -cp . beersong

  • ErikRo
  • Registratie: Juni 2001
  • Laatst online: 07-03 23:42
Wolf87 schreef op dinsdag 06 september 2005 @ 21:41:
moet je niet in de map gaan staan waar beersong zich bevindt, want je hebt met het pad aangegeven waar hij moet zoeken naar java.exe, deze kan cmd dus altijd vinden, het programma wat je heb geschreven niet
Bedankt allebei, dat was het dus. Nu werkt het wel.
Als ik Java intype met het volledige pad naar de class file werkt het niet. Maar ga ik op de plek van de class staan dan werkt het wel. Java kan blijkbaar niet met paden naar class files omgaan???

"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant


  • ErikRo
  • Registratie: Juni 2001
  • Laatst online: 07-03 23:42

"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant


  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 21-04 15:56
niet als je in de class directory gaan staan.

  • ErikRo
  • Registratie: Juni 2001
  • Laatst online: 07-03 23:42
TukkerTweaker schreef op dinsdag 06 september 2005 @ 22:37:
[...]
niet als je in de class directory gaan staan.
Hehe en ik maar zoeken naar een directorie met de naam class onder de java sdk :-)

Maar idd dan werkt het wel, maar dan zou zlefs "java beersong" al volstaan dus zonder de "-cp . "
Of heeft dat weer andere voordelen?

"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant


  • ErikRo
  • Registratie: Juni 2001
  • Laatst online: 07-03 23:42
ErikRo schreef op dinsdag 06 september 2005 @ 22:32:
[...]
Als ik Java intype met het volledige pad naar de class file werkt het niet. Maar ga ik op de plek van de class staan dan werkt het wel. Java kan blijkbaar niet met paden naar class files omgaan???
Even uit nieuwsgierigheid. Iemand die weet of deze aanname klopt? Of het kan verkaren waarom padverwijzingen naar .class niet werken.


edit: ik geloof dat ik net heb ontdekt waar -cp voor staat O-)

[ Voor 8% gewijzigd door ErikRo op 07-09-2005 09:42 ]

"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant


  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 22-04 03:55

Nick_S

++?????++ Out of Cheese Error

ErikRo schreef op dinsdag 06 september 2005 @ 23:02:
[...]


Hehe en ik maar zoeken naar een directorie met de naam class onder de java sdk :-)

Maar idd dan werkt het wel, maar dan zou zlefs "java beersong" al volstaan dus zonder de "-cp . "
Of heeft dat weer andere voordelen?
"Normaal" gesproken zet je de directory . (huidige directory dus) ook op je environment variable classpath.

Nog een tip: als je met packages gaat werken is je classpath directory de root van je package.

Oftewel, package com.blabla.jadaja in directory c:\myjava. Dan staan je class files in c:\myjava\com\blabla\jadaja. Dan is nog steeds je classpath directory c:\myjava. (Hopelijk ben ik duidelijk, zo niet, rot voor je. vraag het dan nog maar eens. :)

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'

Pagina: 1