Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

Bestand inlezen via opdrachtprompt, voor Java

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste iedereen,

Ik ben benieuwd hoe ik een bestand kan inlezen via opdrachtpromt voor een Java bestand op Windows.

Het in te lezen bestand heet: input.txt

In dit bestand staan wat waardes.

Nu heb ik een JAVA script geschreven genaamd Getallen_sorteren.java dat de waardes in het bestand moet inlezen en bewerkingen op moet uitvoeren.

Op linux lukt het me wel, dan tik ik simpelweg in:

(home directory)

javac Getallen_sorteren.java //om te compilen
java Getallen_sorteren < input

En het wordt uitgevoerd!

Alleen het lukt me maar niet om dit op Windows te doen... beide bestanden zijn dan echter wel opgeslagen in de bin bij de java map...

Het probleem zit 'm mijns inziens hier:

(current directory zit op bin)

java Getallen_sorteren < input ...

ik heb ook:

java Getallen_sorteren < input.txt //dus met extensie

geprobeerd, maar tevergeefs.

Iemand enig idee hoe ik dit kan oplossen?

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

De commandline argumenten komen gewoon terecht in de standaard String[] args parameter van de standaard main() methode. Vervolgens haal je daar de opgegeven bestandsnaam eruit en kun je de Java IO API gebruiken om het bestand te inlezen. Google eens op Java IO tutorial en check de 1e hit. Houd wel rekening met de huidige werkdirectory en relative vs. absolute paden.

[ Voor 14% gewijzigd door BalusC op 28-10-2008 20:02 ]


Verwijderd

Topicstarter
Het probleem is, dit werkt niet:

javac Getallen_sorteren.java
java Getallen_sorteren < input //of eventueel met extensie: input.txt

dan krijg ik deze foutmelding bij opdrachtprompt:

Exception in thread "main" java.lang.NoClassDefFoundError: Getallen_sorteren
Caused by: java.lang.ClassNotFoundException: Getallen_sorteren
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

Terwijl het bij terminal op Linux wel netjes werkt...

Het input.txt bestand bevat gewoon een paar getallen die ingelezen moeten worden.

Beide bestanden zitten in de BIN map bij de JAVA-map.

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Verwijderd schreef op dinsdag 28 oktober 2008 @ 20:14:
Exception in thread "main" java.lang.NoClassDefFoundError: Getallen_sorteren
Caused by: java.lang.ClassNotFoundException: Getallen_sorteren
Dit betekent gewoon dat de gegeven klasse niet in de huidige classpath gevonden kan worden, het komt niet eens toe aan het uitvoeren van de daadwerkelijke programma 8)7

Kijk eens naar de -classpath (of de -cp) argument van de java.exe. Daarin geef je de hoofd-paden op waarin de gewenste klassen en libraries staan. Indien dit onder andere de huidige directory moet omvatten, dan gebruik je de punt ".". De paden kun je scheiden met de puntkomma ";" en indien er een spatie in de pad zit, dan moet je de pad omvatten met doublequotes ". Bijvoorbeeld:
code:
1
java -cp . Getallen_sorteren < input.txt
Dat dit in Linux werkt komt waarschijnlijk omdat je de %CLASSPATH% omgevings variabele hebt ingesteld. Dit zou je niet moeten hoeven gebruiken though. Gebruik gewoon de -classpath of -cp parameter, dan werkt het overal :)

Overigens is het netjes als je CamelCase gebruikt in Java. Bijvoorbeeld GetallenSorteren. Da's een algemeen geaccepteerd conventie gedefinieerd door Sun itself.

[ Voor 24% gewijzigd door BalusC op 28-10-2008 20:37 ]