Programm welches auf CMD basirende Programme öffnet (Notepad), sucht , ausführt und compiliert

Bitte aktiviere JavaScript!
Ich habe mittlerweile das ganze WWW durchsucht und keine Lösung gefunden. Das Problem: Wenn ich ein Programm über ein anderes starte, so öffnet es sich in ein neues Fenster wird dann aber geschlossen, da das andere Programm zu Ende ist. Kann mir jemand sagen, wie ich die Prozesse unabhängiger machen kann oder das das Programm wartet bis das andere fertig ist? Mit der Sleep Methode komme ich nicht weiter, da ja das gesamte Programm gefriert.
Gibt es da eine "warte" Methode oder so etwas ähnliches für CMD, mit Notepad funktioniert es einwandfrei?

Ich stelle euch einfach mal den Code zur Verfügung:
Code:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.io.*;

public class SOEC {
   public static void main(String[] args) {
     
      File ef;
     
      SpielHelfer helfer = new SpielHelfer();
      String xy = helfer.getBenutzereingabe(" ");
      String ab = helfer.getBenutzereingabe(" ");
      String gh = helfer.getBenutzereingabe(" ");
     
      SearchCN search = new SearchCN();
      ArrayList<File> cd = search.searchFile(new File ("C:\\Users\\pag\\Documents\\Java"), gh);
      if (cd.size() == 1) {
          ef = cd.get(0);
      } else {
          return;
      }
     
      if (xy.equals("a")) {
          try {
            System.out.println("Programm laeuft.");
            Process process = Runtime.getRuntime().exec(" conhost.exe java " + ab, null, ef);
            process.waitFor();
          } catch (Exception ex) {
             ex.printStackTrace();
          }
       }
       if (xy.equals("b")) {
           try {
             Process process = Runtime.getRuntime().exec(" conhost.exe javac " + ab, null, ef);
             process.waitFor();
          } catch (Exception ex) {
             ex.printStackTrace();
          }
       }
       if (xy.equals("c")){
           try {
             Process process = Runtime.getRuntime().exec("C:\\Program Files (x86)\\Notepad++\\notepad++.exe " + ab, null, ef);
             process.waitFor();
           } catch (Exception ex) {
               ex.printStackTrace();
           }
       }
    }
}
 
Zuletzt bearbeitet:
Hat nun alles geklappt!!! Allerdings hängt sich CMD auf und dies nach einer bestimmten Anzahl von Benutzereingaben einesw winzigen Programms(Schiffe Versenken auf CMD mit einem unsichtbaren Virtuellen Raster). Hat jemand Ahnung davon?
 
Für alle die ein solches Programm ebenfalls wollen:
É-Voula ein Fertigcode:
Klasse SOEC:

Code:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.io.*;

public class SOEC {
   public static void main(String[] args) {
      
      
      File ef;
      
      SpielHelfer helfer = new SpielHelfer();
      String xy = helfer.getBenutzereingabe(" ");
      String ab = helfer.getBenutzereingabe(" ");
      String gh = helfer.getBenutzereingabe(" ");
      
      SearchCN search = new SearchCN();
      ArrayList<File> cd = search.searchFile(new File ("C:"), gh);
      if (cd.size() == 1) {
          ef = cd.get(0);
      } else {
          return;
      }
      
      if (xy.equals("a")) {
          try {
            System.out.println("Programm laeuft.");
            Process process = Runtime.getRuntime().exec("conhost.exe java " + ab, null, ef);
            process.waitFor();
          } catch (Exception ex) {
             ex.printStackTrace();
          }
       }
       if (xy.equals("b")) {
           try {
             Process process = Runtime.getRuntime().exec("conhost.exe javac " + ab, null, ef);
             process.waitFor();
          } catch (Exception ex) {
             ex.printStackTrace();
          }
       }
       if (xy.equals("c")){
           try {
             Process process = Runtime.getRuntime().exec("C:\\Program Files (x86)\\Notepad++\\notepad++.exe " + ab, null, ef);
             process.waitFor();
           } catch (Exception ex) {
               ex.printStackTrace();
           }
       }
    }
}
Die Klasse SearchCN:
Code:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

public class SearchCN {
    
    //SpielHelfer helfer = new SpielHelfer();
    //String ab = helfer.getBenutzereingabe(" ");
      
    //File f = new File("C:\\Programme");
    //File[] fileArray = f.listFiles();

    public ArrayList<File> searchFile(File dir, String find) {

        File[] files = dir.listFiles();
        ArrayList<File> matches = new ArrayList<File> ();
        if (files != null) {
            for (int i = 0; i < files.length; i++) {
                if (files[i].getName().equalsIgnoreCase(find)) { // überprüft ob der Dateiname mit dem Suchstring
                                         // übereinstimmt. Groß-/Kleinschreibung wird
                                         // ignoriert.
                    matches.add(files[i]);
                }
                if (files[i].isDirectory()) {
                    matches.addAll(searchFile(files[i], find)); // fügt der ArrayList die ArrayList mit den
                                            // Treffern aus dem Unterordner hinzu
                }
            }
        }
        return matches;
    }
}
Und für die Kommunikation:
Code:
import java.io.*;
public class SpielHelfer {
    public String getBenutzereingabe(String prompt) {
        String eingabeZeile = null;
        System.out.print(prompt + " ");
        try {
            BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
            eingabeZeile = is.readLine();
            if (eingabeZeile.length() == 0 ) return null;
            } catch (IOException e) {
            System.out.println("IOException: " + e);
            }
        return eingabeZeile;
    }
}
 
Also ich habe jetzt eine letzte Frage. Mit allen Prgrammen läuft es nun, außer mit der Command Zeile(CMD o. PowerShell). Hat jemand eine Ahnung ob irgendwo in meinen Codes etwas enthalten ist, das CMD abstürzen lässt?
Nach x Eingaben, schmiert CMD o. PowerShell nämlich ab...
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben