siser Geschrieben 25. Oktober 2008 Geschrieben 25. Oktober 2008 Hi, ist es möglich durch Java eine command line interface gesteuerte exe anzusprechen? Habe mir das so Gedacht : exe befindet sich im gleichem Ordner wie das Projekt(bluej) bzw in einer var ist per FileDialog der Pfad zur exe in Erfahrung gebrahct worden. Nun habe ich Methoden die mir jenachdem was actionperformed mir von gui gibt einen String zusammensetzen zb "--nd --ss" und möchte mit diesem dann die exe aufrufen und das übergeben. Ist das möglich? Wenn ja wie kann man es ungefähr implementieren? Ich hab es mit Runtime.getRuntime().exec("cmd.exe /c"+pfad+"-- nd --ss"); probiert wobei pfad ein String ist, mit zb. C:\Users\****\Desktop\Projektordner\***.exe . Leider wird die exe nicht gestartet. Als Test hatte ich Runtime.getRuntime().exec("cmd /c"+"start excel.exe");}, was ohne Probleme klappte. Würde mich über leicht erklärte Hilfe sehr freuen. Zitieren
siser Geschrieben 25. Oktober 2008 Autor Geschrieben 25. Oktober 2008 (bearbeitet) Ok. mit Start klappts jetzt aber Bluej gibt mir bei : Runtime.getRuntime().exec("cmd /c start "+pfad+" --a --b --c --output "D:\**.mkv" "D:\Quell.avs"") eine Error der besagt es würde eine ) fehlen Bearbeitet 25. Oktober 2008 von siser Zitieren
kingofbrain Geschrieben 26. Oktober 2008 Geschrieben 26. Oktober 2008 Ich hab nur grob drübergeschaut, aber ich denke, Du musst noch die " escapen, die keine Stringbegrenzer sind. Das Escape-Zeichen ist "\". Ansonsten denkt Java natürlich, das ist der Ende des Strings und will, dass Du die Methode mit "(" abschließt. Peter Zitieren
siser Geschrieben 26. Oktober 2008 Autor Geschrieben 26. Oktober 2008 Stimmt das ging jetzt. hatte es mit ' probiert, was aber leider nicht richtig funktionierte. Nun habe ich noch ein Problem. Ich öffne ja die exe mittels Runtime.getRuntime()exec ... nun verschwindet aber leider die aufgerufene cli sofort wieder wenn ein fehler auftritt. Ich hatte probiert mit /k das DosFenster offen zu halten, aber ich sehe es trotzdem nur ein paar Milisekunden. Gibts da eine Möglichkeit das offen zu halten? Versuche mit ImputStream und Errorstream den Fehler auszulesen brachten immer null. try{ Process p=Runtime.getRuntime().exec("cmd /k start "+pfad+" "+parameter+" "+ziel+" "+quelle); dann: try{ p.waitFor();} catch(InterruptedException ie){}; System.out.println( "Rückgabewert: " + p.exitValue()); oder: final InputStream processOutput = p.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader( processOutput)); String line; while ((line = br.readLine()) != null) { System.out.println(line); } oder: BufferedReader in = new BufferedReader ( new InputStreamReader (p.getInputStream()) ); int ch; while( (ch = in.read()) != -1 ) { System.out.println(ch); } oder: Scanner s = new Scanner( p.getInputStream()); while (s.hasNext()) System.out.println(s.nextLine()); Scanner d = new Scanner( p.getErrorStream()); while (d.hasNext()) System.out.println(d.nextLine());[/PHP] hatte ich versucht. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.