Toon posts:

[JAVA] Kan class niet vinden?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een vreemd probleem, velen van jullie zullen mij waarschijnlijk uitlachen of het een n00bvraag vinden maar toch. Ik heb ik JBuilder4 een project gemaakt. De applicatie werkt perfect als ik hem in JBuilder laat runnen, geen probleem. voer ik echter in de dos-promt het volgende uit:
code:
1
java Main

Dan krijg ik de volgende foutmelding:
code:
1
Exception in Thread "main" java.lang.NoClassDefFoundError: Main (wfs2/Main)


Ik denk dat het te maken heeft met het feit data alle bestanden beginnen met package wfs2;

Hoe kan ik ervoor zorgen dat het programma wel werkt vanuit de dos-prompt zodat ik met ZeroG een Installer kan maken, want ook die zegt dat ie de Main-class niet kan vinden...

Thnx

Verwijderd

Ehhh, vraagje, heb je een andere class geschreven met een public static void main method?

Zo ja, hoe heet die class.
De class waarin de public static void main bevat die moet je aanroepen. Stel dus dat je class bla heet, met public static void main, dan krijg je dus dit:

java bla

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Mijn advies is om JBuilder even links laten te liggen en dat je je moet verdiepen in java compileren + draaien van de console. Als je dat gelukt is kun je dit (nare) karwei ook automatiseren met ANT. ANT is voor java het build-systeem en hiermee heb je betere controle + inzicht over waar wat komt te staan.

Verwijderd

Topicstarter
Mijn class Main.class heeft Main method...

Verwijderd

JBuilder vind ik ook niet zo'n geweldige java ontwikkel tool. Maar goed, ik ben ook een die-hard notepad & command prompt developer als het om Java gaat :)

edit:

Wat overigens niet betekent dat ik er goed in ben :)

[ Voor 22% gewijzigd door Verwijderd op 29-03-2004 12:24 ]


  • syntegra
  • Registratie: Februari 2002
  • Laatst online: 13-04-2024
volgens mij ligt het probleem aan je classpath instelling

probeer eens: java -cp . Main

(dus tussen -cp en Main een punt, met spaties errond)

Verwijderd

Topicstarter
Kijk, als ik de alla .java bestandjes kopieer naar een willekeurige map. En dan uitvoer:

code:
1
javac *.*


Dan krijg ik dus alle .class bestanden. wil ik dan Main.class runnen geeft ie alsnog dezelfde foutmelding...
syntegra schreef op 29 maart 2004 @ 12:28:
volgens mij ligt het probleem aan je classpath instelling

probeer eens: java -cp . Main

(dus tussen -cp en Main een punt, met spaties errond)
Nog steeds de foutmelding...

[ Voor 56% gewijzigd door Verwijderd op 29-03-2004 12:30 ]


  • __fred__
  • Registratie: November 2001
  • Laatst online: 24-05 22:44
Verwijderd schreef op 29 maart 2004 @ 12:11:
Ik denk dat het te maken heeft met het feit data alle bestanden beginnen met package wfs2;
Je geeft het antwoord eigenlijk zelf al. Je hebt de Main class gedefinieerd in een package. Dat is geen enkel probleem en zelfs heel netjes, alleen zal je applicatie niet gaan werken als je de packagenaam er niet bij opgeeft.

Je zult als het goed is in je root project directory een subdirectory wfs2 zien staan met daar een Main.class file erin. Deze directory ga je NIET in, maar je blijft in de project root directory.
Vervolgens tik je:
code:
1
java wfs2.Main

Grote kans dat het dan wel werkt.

ow, iets meer info hierover vind je op http://www.yoda.arachsys.com/java/packages.html

[ Voor 6% gewijzigd door __fred__ op 29-03-2004 12:34 . Reden: link toegevoegd ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Verwijderd schreef op 29 maart 2004 @ 12:23:
JBuilder vind ik ook niet zo'n geweldige java ontwikkel tool. Maar goed, ik ben ook een die-hard notepad & command prompt developer als het om Java gaat :)
Ik gebruik wel een geavanceerde IDE (Codeguide), maar het builden wil ik niet aan een IDE overlaten. Het is superhandig om bij ieder project een ANT script te hebben doordat je nu zonder IDE ook alles kan builden.

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Verwijderd schreef op 29 maart 2004 @ 12:28:
Kijk, als ik de alla .java bestandjes kopieer naar een willekeurige map. En dan uitvoer:

code:
1
javac *.*


Dan krijg ik dus alle .class bestanden. wil ik dan Main.class runnen geeft ie alsnog dezelfde foutmelding...


[...]

Nog steeds de foutmelding...
Ok.

Probeer je classpath eens te zetten naar de dir waar je Main.class hebt staan.

Dus als ie in c:\java staat moet je dit proberen.

set CLASSPATH=C:\java


Dit lijkt hetzelfde als hierboven werd genoemd, echter heb ik hier beter ervaringen mee dan met de -cp optie.

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • syntegra
  • Registratie: Februari 2002
  • Laatst online: 13-04-2024
sorry, dit werkt niet als je Main klasse al in een package zit (niet goed gelezen :|);

doe het eens als volgt:

1. ga naar de directory die een niveau lager (dus minder diep) ligt dan wfs2
2. voer dan uit: "java -cp . wfs2.Main"

Verwijderd

Topicstarter
Ik heb het een beetje aan de praat!!!

Nog niet helemaal hoe ik het wil, maar ik denk dat ik het nu wel doorheb.

Het had met classpath helemaal niks te maken....

Alles classes behoren tot de package wfs2
Dus ik maakte een folder c:\test\wfs2

in die folder zet ik alle classes. en vanuit c:\test voer ik uit
code:
1
java wfs2.Main


En dan werkt het!
Pagina: 1