CMD Befehl in Java Consolenprogramm ausführen

Jaxor84

Mitglied
Moin
Mein Programm soll in der Console einen CMD Befehl ausführen, genauer ein Bild öffnen. Leider bekomme ich jedes Mal, wenn ich das Programm laufen lasse den Fehler, dass das System die angegebene Datei nicht finden kann, obwohl der Name richtig ist und die Datei sich im selben Ordner wie das Programm befindet (d.h. ich muss theoretisch nicht nochmal ein Verzeichnis angeben, was auch so sein soll, denn das Programm soll auch auf anderen Computern laufen, in dem es in einem anderen Verzeichnis liegt, ohne dass der Code geändert werden muss). Wo liegt der Fehler? Gibt es vielleicht eine andere, elegantere Lösung für das Problem?
LG
MP
Javascript:
try {
      Runtime.getRuntime().exec("call frikadellen.jpg");
    } catch(Exception e) {
       e.printStackTrace();
    }  // end of try
 
call ist eine Funktionalität der shell (cmd.exe). Also solltest Du einfach einmal ausprobieren: "cmd.exe /c call frikadellen.jpg"

Damit startest Du die Shell und sagst ihr direkt, was sie machen soll. Dabei ignorierst du aber so erst einmal alle Fehler. Wenn die Datei nicht da ist, dann kommt in der Shell halt ein Fehler aber der wird nie behandelt ...
 
Wenn die Datei nicht da ist, dann kommt in der Shell halt ein Fehler aber der wird nie behandelt ...
Das funktioniert leider nicht. Jetzt wird an dieser Stelle einfach nichts ausgegeben, der Fehler ist also noch beständig. Was kann ich noch tun? Die Datei ist schließlich da und der Name ist im Code auch korrekt angegeben. Kann es daran liegen, dass Dateien, die nicht zum Programm gehören von der CMD Konsole einfach ignoriert werden?
 
Dann zeig bitte einmal genau, wo welche Dateien sind und wie Du es aufrufst.

Denn ein einfaches Testprogramm mit genau dem Aufruf funktioniert einwandfrei bei mir. Daher dürfte an der Umgebung etwas falsch sein.
Aber an dieser Problematik erkennst Du schon: So würde man das in der Regel nicht machen sondern etwas mehr Code wäre schon super nur um Fehler zu erkennen. So könnte man zuerst prüfen, ob wirklich eine solche Datei vorhanden ist ... Nur um mal das absolute Minimum zu nennen.
 
Die Datei liegt in demselben Verzeichnis wie das Programm (Bild)
Unbenannt.PNG
Hier der gesamte Code:
Javascript:
public class methodenConsole {
 
  public static void tuwaslangweiliges() {
    int boringNumber = 1;
    int boringSolution = boringNumber+boringNumber;
    System.out.println("Ich rechne 1+1");
    System.out.println(boringNumber+"+"+boringNumber+"="+boringSolution);
    }// end of tuwaslangweiliges
 
  public static void warte1Sekunde() {
    try {
      Thread.sleep(1000);
    } catch(InterruptedException e) {
      
    } // end of try
    } //end of warte1Sekunde
 
  public static void warte2Sekunden() {
    try {
      Thread.sleep(2000);
    } catch(InterruptedException e) {
      
    } // end of try
    } //end of warte2Sekunden
 
  public static void warte5Sekunden (){
    try {
      Thread.sleep(5000);
    } catch(InterruptedException e) {
      
    } // end of try
    }
 
  public static void brateFrikadelle() {
    warte5Sekunden();
    System.out.println("Wie jetzt? Wie soll ich denn eine Frikadelle braten?\n");
    warte2Sekunden();
    System.out.println("Was soll das denn? Ich bin ein Computer!!! Wie soll ich denn eine Frikadelle braten???\n");
    warte2Sekunden();
    System.out.println("Immer wollen alle was von mir. Immer soll ich sofort alles können und wenn ich mal nicht so funktioniere wie alle es wollen, dann hacken sie auf mir herum!\n");
    warte2Sekunden();
    System.out.println("Das zehrt an meinen Kräften! Sowas auszuhalten ist extrem anstrengend!\n");
    warte2Sekunden();
    System.out.println("Computer haben auch Gefühle, wissen Sie?\n");
    warte2Sekunden();
    System.out.println("Na gut, eine Sekunde...\n");
    warte5Sekunden();
    try {
      Runtime.getRuntime().exec("cmd.exe c/ call frikadellen.jpg");
    } catch(Exception e) {
       e.printStackTrace();
    }  // end of try
          
     }

  public static void main(String[] args) {
    tuwaslangweiliges();
    brateFrikadelle();
  } // end of main

} // end of class methodenConsole
Du siehst sicher schon, das ist auch eher ein Spaß, nichtsdestotrotz möchte ich das Problem des Bildes gerne lösen und nicht in die Ecke schmeißen, weil es gerade nicht funktioniert...
 
Du hast geschrieben:
cmd.exe c/ call frikadellen.jpg

Richtig wäre aber "/c" und nicht "c/".
 

Zurück
Oben