# Problem mit Runtime.getRuntime().exec("cls");



## xerxes (1. Mrz 2005)

Hallo Freunde

Wenn ich versuche mit Hilfe von exec() den Befehl *"cls"* (ClearScreen) auf Dos-ebene auszuführen, bekomme ich folgende Fehlermeldung.

*java.io.IOException: CreateProcess: cls error=2*

Kann mir jemand sagen was ich da falsch mache!!!!




```
public class Animation
{


    public static final void main( String[] args )
    {

		int i = 0;

		while(true)
		{

			Animnation(i);
			i++;
			if(i == 3)
			i=0;
			try
		       {
		           Thread.sleep(100);
		           Runtime.getRuntime().exec("cls");
		       }
		       catch (InterruptedException e)
		       {
		           // TODO Auto-generated catch block
		           e.printStackTrace();
		       }
		       catch (Exception e)
		       {
		           // TODO Auto-generated catch block
		           System.out.println(e.toString());
		       }

		}
	}


	public static void Animnation(int i)
	{
		switch(i)
		{
			case 0:
			{
				System.out.println("|\b");
				break;
			}
			case 1:
			{
				System.out.println("/\b");
				break;
			}
			case 2:
			{
				System.out.println("-\b");
				break;
			}
			case 3:
			{
				System.out.println("\\\b");
				break;
			}
			default:
			{
				break;
			}
		}
	}
}
```


----------



## KSG9|sebastian (1. Mrz 2005)

änder die zeile so ab:


```
Runtime.getRuntime().exec("cmd /c cls");
```


----------



## Sky (1. Mrz 2005)

KSG9|plak hat gesagt.:
			
		

> änder die zeile so ab:
> 
> 
> ```
> ...



Ich denke, dass es nicht helfen wird, weil durch das "cmd" nach meinem Verständnis eine neue Console aufgemacht wird, welche dann geleert wird und dann wird zum Programm zurückgekehrt.


----------



## xerxes (1. Mrz 2005)

KSG9|plak hat gesagt.:
			
		

> änder die zeile so ab:
> 
> 
> ```
> ...



Danke für den Tipp
Ich bekomme die Fehlermeldung zwar nicht mehr, aber die console wird trotzdem nicht geleert !!!!!
Wie kann es sein, daß in java keine Clearscreen-Methode gibt ?


----------



## xerxes (1. Mrz 2005)

sky80 hat gesagt.:
			
		

> KSG9|plak hat gesagt.:
> 
> 
> 
> ...




Hi
Eine neue Console wird mit dem Befehl *"start"* aufgemacht und nicht mit cmd, aber es hat trotzdem nicht geholfen!!!!


----------



## Sky (1. Mrz 2005)

Ok, hab mal nachgeschaut, was es macht; erklärt damit auch, warum es nicht geht:





			
				Win2000 hat gesagt.:
			
		

> C:\>cmd /?
> Startet eine neue Instanz des Windows 2000-Befehlsinterpreters.


----------



## The_S (1. Mrz 2005)

Gabs da nicht mal einen ausführlichen Thread drüber? *such*


----------



## Destiny1985 (1. Mrz 2005)

mit start wird eine neue instanz gestartet aus einer anderen console heraus...sprich wenn du eine hast und start eingibst kommt ne 2.

mit cmd wird die erste console geöffnet, hier kennt er den befehl start glaube gar nicht !


----------



## Sky (1. Mrz 2005)

Destiny1985 hat gesagt.:
			
		

> mit start wird eine neue instanz gestartet aus einer anderen console heraus...sprich wenn du eine hast und start eingibst kommt ne 2.
> 
> mit cmd wird die erste console geöffnet, hier kennt er den befehl start glaube gar nicht !



Wenn Du mit cmd eine Console öffnest kannst Du mit start weitere öffnen


----------



## thE_29 (1. Mrz 2005)

Ja, aber sie startet diese Instanz in deinem Fenster!

Mit Start wird ein neues Fenster gestartet!!


/C startet Befehl und schließt sich!

Desweitern habe ich die Lösung gefunden!!

der String hier = "\u001B[2J"
löscht eine Konsole, aber nur dann wenn man 


> Um die richtige Ausgabe sicherzustellen, muss (unter DOS/Windows) ANSI.SYS geladen sein ("DEVICE=xxx\ANSI.SYS" in der Config.sys)



Ich werd schnell einen Beitrag in die FAQs schreiben (achja unter Linux gehts!)


----------



## xerxes (1. Mrz 2005)

thE_29 hat gesagt.:
			
		

> Ja, aber sie startet diese Instanz in deinem Fenster!
> 
> Mit Start wird ein neues Fenster gestartet!!
> 
> ...



Hi

Ja diese Methode kenne ich auch, aber unter Win XP (hätte ich besser vorher sagen müssen) gibt es kein Config.sys
trotz dem vielen Dank


----------



## thE_29 (1. Mrz 2005)

Probier mal die Autoexec.NT und config.NT im System32 Verzeichnis!

Glaub aber die reagieren nur auf command.com und net cmd.com!


----------



## thE_29 (1. Mrz 2005)

Desweiteren das hier in der XP Hilfe gefunden:

Beispiele
Wenn Sie den Bildschirm und die Tastatur für das MS-DOS-Subsystem mithilfe einer ANSI-Escapesequenz steuern möchten, müssen Sie den folgenden Befehl in die Datei Config.nt oder eine äquivalente Startdatei eingeben: 

device=c:\winnt\system32\ansi.sys


----------



## xerxes (1. Mrz 2005)

thE_29 hat gesagt.:
			
		

> Desweiteren das hier in der XP Hilfe gefunden:
> 
> Beispiele
> Wenn Sie den Bildschirm und die Tastatur für das MS-DOS-Subsystem mithilfe einer ANSI-Escapesequenz steuern möchten, müssen Sie den folgenden Befehl in die Datei Config.nt oder eine äquivalente Startdatei eingeben:
> ...





Mille Grazie


----------



## thE_29 (1. Mrz 2005)

Hats funktioniert?


----------



## Maverick_116 (6. Mrz 2005)

```
try
        {
            Runtime.getRuntime().exec("cmd"); 
        }
        catch (Exception e)
        {
            JOptionPane.showMessageDialog(this, "Fehler beim ausführen des Befehls 'CMD'", "Error Message", JOptionPane.ERROR_MESSAGE);
        }
```

Das funktioniert bei mir auch nicht.....

..ich finde meinen fehler nicht, wenn ich auf den button klicke passiert gar nichts 

mfg Maverick


----------



## thE_29 (7. Mrz 2005)

Was soll den auch passieren??


1. das man bei google und in vielen Foren gefunden "Runtime.getRuntime().exec("cls"); ist kompletter Schwachsinn!

2. dein Befehl bewirkt das sich eine Shell intern aufmacht und das wars auch schon (sich aber nicht über deine aktive drüberlegt!).


3. es geht nur mit dieser Escape Sequenz und bei Windows Versionen die auf NT Kern passieren, muß man die Konsole auf ANSI ändern!! (bei Win9x oder Linux Konsolen hingegen funktioniert es)


----------



## Guest (7. Mrz 2005)

thE_29 hat gesagt.:
			
		

> Hats funktioniert?




leider nicht, aber das liegt an WinXP

trotzdem vielen Dank

X


----------



## thE_29 (7. Mrz 2005)

Jo, man muß irgendwie die Konsole auf ANSI umstellen, die Frage ist halt nur wie!


----------

