kjey Skrevet 16. august 2006 Del Skrevet 16. august 2006 Hei. Jeg har en tilsvarende topic på norskwebforum også, men ingen kom fra til riktig løsning, så jeg spør her i tillegg. Det jeg vil fram til er hvordan man kan skrive kommandoer til DOS. F.eks. javac kommandoen og cd c:\Java osv. Noen som vet hvordan dette gjøres i Java? Takker på forhånd! Lenke til kommentar
bragoon Skrevet 16. august 2006 Del Skrevet 16. august 2006 (endret) Mener du å kalle kommandoer fra javaprogrammet? Vet ikke helt hvordan det er i windows, men for å kalle kommandoer i linux kan man bruke Runtime.getRuntime().exec(new String[] {"cd java"}) Eller ønsker du å starte ting fra windows, som å lage en bat-fil? cd c:\Java javac programmetmitt.java java programmetmitt Lagre som ettelrannet.bat Edit: sjekka hvordan man kunne gjøre det i win: Link: http://www.rgagnon.com/javadetails/java-0014.html Endret 16. august 2006 av bragoon Lenke til kommentar
kjey Skrevet 16. august 2006 Forfatter Del Skrevet 16. august 2006 Takk for svar, men jeg skjønte ikke 100% kodeeksemplene der. Hvis jeg f.eks. skal kjøre denne kommandoen i dos, "cd c:\", hvordan skriver jeg det da? Lenke til kommentar
bragoon Skrevet 16. august 2006 Del Skrevet 16. august 2006 try { Runtime.getRuntime().exec(new String[] {"cd c:/java"}); } catch (IOException e) { System.out.println("skar seg.."); e.printStackTrace(); } Lenke til kommentar
kjey Skrevet 16. august 2006 Forfatter Del Skrevet 16. august 2006 Får bare opp at det skar seg og en masse meldinger som jeg ikke ble så klok av. Prøvde også å skrive javac Test.java osv., men fikk samme meldingene. skar seg..java.io.IOException: CreateProcess: cd error=2 at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.<init>(ProcessImpl.java:81) at java.lang.ProcessImpl.start(ProcessImpl.java:30) at java.lang.ProcessBuilder.start(ProcessBuilder.java:451) at java.lang.Runtime.exec(Runtime.java:591) at java.lang.Runtime.exec(Runtime.java:464) at Test.main(Test.java:9) Press any key to continue... Lenke til kommentar
bragoon Skrevet 16. august 2006 Del Skrevet 16. august 2006 try { Process p = Runtime.getRuntime().exec("\"c:/program files/TextPad 4/TextPad.exe\""); p.waitFor(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } Hvis man skulle passe argumenter til programet (javac mittjavascript.java) kunne man visst gjøre slik: String[] cmd = { "myProgram.exe", "-o=This is an option" }; Runtime.getRuntime().exec(cmd); Sakset fra guiden linket til lengre opp Lenke til kommentar
kjey Skrevet 16. august 2006 Forfatter Del Skrevet 16. august 2006 Hmmm... prøvde dette, men funka ikke (fikk masse meldinger da også): import java.io.*; public class Test { public static void main(String[] args) { try { String[] cmd = { "javac c:/Test.java"}; Runtime.getRuntime().exec(cmd); } catch (IOException e) { System.out.println("skar seg.."); e.printStackTrace(); } } } Hvis jeg bare skrev javac og ikke noe annet skjedde det ingenting. For informasjonens skyld så prøver jeg å lage en java-kompilerer som automatisk kjører javac kommandoen. Lenke til kommentar
kyrsjo Skrevet 16. august 2006 Del Skrevet 16. august 2006 Et par eksempler til som funker utmerket: package net.sourceforge.givtv.backend; import java.io.*; /**Methods to manage a mplayer window * * @author Kyrre Ness Sjøbæk * */ public class MplayerInterface { //private final String mplayercommand = "mplayer"; private Process mplayer; private BufferedWriter mplayerCommander; public void startMplayer (String playfile) { System.out.println("Starting mplayer..."); try { //TODO: Wanted: something to stop mplayer from using keyboard controls in the mplayer window mplayer = Runtime.getRuntime().exec("mplayer -quiet -slave " + playfile); /* BufferedReader stdInput = new BufferedReader(new InputStreamReader(mplayer.getInputStream())); //Capture the output boolean read_continue = true; while (read_continue) { String nextline = stdInput.readLine(); if (nextline != null) { System.out.println(nextline); } else read_continue = false; } stdInput.close(); */ mplayerCommander = new BufferedWriter(new OutputStreamWriter(mplayer.getOutputStream())); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void stopMplayer () { System.out.println("Stopping mplayer..."); try { mplayerCommander.write("quit\n"); mplayerCommander.close(); //Will give a backtrace if q has been pressed on mplayer. } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //mplayer.waitFor(); } } (den utkommenterte koden henter og skriver ut hva enn mplayer måtte finne på å dumpe i konsollet) /**Run ivtv-tune with the given arguments. * --device (videodevice) is always given * * @param args The arguments that you want to be passed to ivtvtune * @return A list of every line of standard output from ivtvtune */ private String[] ivtvtune_run (String args) { try { ArrayList returnlist = new ArrayList(); Process ivtv_tune = Runtime.getRuntime().exec("ivtv-tune --device=" + videodevice + " " + args); BufferedReader stdInput = new BufferedReader(new InputStreamReader(ivtv_tune.getInputStream())); ivtv_tune.waitFor(); //Capture the output boolean read_continue = true; while (read_continue) { String nextline = stdInput.readLine(); if (nextline != null) { returnlist.add(nextline); } else read_continue = false; } stdInput.close(); //Process the output for return String[] returnstring = new String[returnlist.size()]; for (int i = 0; i < returnlist.size(); i++) { returnstring[i] = (String) returnlist.get(i); } return returnstring; } catch (IOException error) { error.printStackTrace(); System.exit(-1); return null; } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); System.exit(-1); return null; } Lenke til kommentar
kjey Skrevet 16. august 2006 Forfatter Del Skrevet 16. august 2006 Ok, tusen takk for svar! Skal se over eksemplene og teste ut, så finner jeg det sikkert ut til slutt! Lenke til kommentar
kyrsjo Skrevet 17. august 2006 Del Skrevet 17. august 2006 Merk at de kodesnuttene jeg posta ikke er testa på annet enn Linux - da kommandoene de kjører er meget linux-spesifikke (i allefall den nederste) Lenke til kommentar
kjey Skrevet 17. august 2006 Forfatter Del Skrevet 17. august 2006 (endret) Jeg fikk denne koden til å fungere! Den kompilerer riktig, men det er et problem , og det er at hvis noe er feil med kodene i filen jeg kompilerer skriver den ikke ut noen feilmelding. Noen som kanskje vet noe om dette? import java.io.*; public class Test2 { public static void main(String[] args) { try { Process p = Runtime.getRuntime().exec("javac c:/Test.java"); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); } catch(Exception e) { System.out.println("Noe er galt med koden!"); } } } Endret 17. august 2006 av kjey Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå