2015-01-17 2 views
0

Так что я хочу, чтобы открыть CMD, хотя Java с этим кодомOpen ЦМД Java

import java.io.IOException; 

public class mainer { 
    public static void main(String args[]) { 
     try { 
      Runtime.getRuntime().exec("cmd.exe /c start"); 
      System.out.println("ok"); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

, но я получаю эту ошибку, когда я исполню ее

java.io.IOException: Cannot run program "cmd.exe": CreateProcess error=193, %1 is not a valid Win32 application 
at java.lang.ProcessBuilder.start(Unknown Source) 
at java.lang.Runtime.exec(Unknown Source) 
at java.lang.Runtime.exec(Unknown Source) 
at java.lang.Runtime.exec(Unknown Source) 
at mainer.main(mainer.java:6) 
Caused by: java.io.IOException: CreateProcess error=193, %1 is not a valid Win32 application 
at java.lang.ProcessImpl.create(Native Method) 
at java.lang.ProcessImpl.<init>(Unknown Source) 
at java.lang.ProcessImpl.start(Unknown Source) 
... 5 more 

и самое смешное в том, что он работал 2 дней назад, и теперь она дает мне эту странную ошибку

+1

Я использую 32-разрядную ОС и 32-битную java ... ваш код успешно выполнен на моей машине ... Проблема может возникнуть с несоответствием ОС и java (32 бит и 64) – Anptk

ответ

2

Я думаю, что это должно быть:

Runtime.getRuntime().exec(new String[]{"cmd.exe","/c","start"}); 

Чтобы узнать больше о start, введите help start в командной строке.

+0

«Runtime.getRuntime(). Exec (new String [] {"cmd.exe", "/ c", "start"}); ' дает такую ​​же ошибку + извините, что я новичок на сайте, и я нахожу трудности с маркировкой теста в качестве кода –

+0

. Проверяйте @ fabian-barney ответ. Вероятно, вы используете 32-разрядную Java на машине x64. – hofmeister

0

Кажется, что ваша переменная PATH не имеет пути к cmd.exe, поэтому лучше попробуйте это.

import java.io.IOException; 

public class mainer { 
    public static void main(String args[]) { 
     try { 
      Runtime.getRuntime().exec(new String[]{System.getenv().get("SystemRoot")+"/cmd.exe", "/c", "start"}); 
      System.out.println("ok"); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 
0

Может быть, вы пытаетесь запустить 64-разрядную cmd.exe с 32-разрядной JRE.

Попробуйте выполнить вместо этого C:\Windows\SysWOW64\cmd.exe, что является 32-разрядным.

+0

спасибо, что это сработало –

Смежные вопросы