2012-06-08 15 views
8

'u kullanarak CMD'yi başlatın CMD uygulamasını aşağıdaki kodu kullanarak Windows'ta başlatmaya çalışıyorum ancak beklendiği gibi çalışmıyor. Farklı web sitelerinden birkaç örnek, ProcessBuilder yapısında argüman olarak "cmd" nin çalışması gerektiğini göstermektedir.ProcessBuilder

Java uygulamamın pencerelerde CMD uygulamasını açmasını sağlamak için ne yapmam gerekiyor?

public class JavaTest 
{ 
    public static void main(String[] args) 
    { 
     ProcessBuilder pb = new ProcessBuilder("cmd"); 

     try 
     { 
      pb.start(); 
      System.out.println("cmd started"); 
     } 
     catch (IOException e) 
     { 
      System.out.println(e.getMessage()); 
     } 
    } 
} 

O aslında "CMD" çalışır anlamına yüzden, aslında bir hata yazdırır Mevcut olmayan bir uygulamayı kullanmayı deneyin

. Ancak CMD uygulaması beklendiği gibi açılmıyor mu?

+1

, onun ilk soru ne olurdu? Bize hata mesajının ne olduğunu söylemezseniz, herhangi bir yardım almayı nasıl beklersiniz? –

+2

Süslü bir yorumla zıplamadan önce, OP'nin ne dediğini okumayı deneyin. _so bu aslında "CMD" yi çalıştırdığı anlamına gelir. Ama CMD uygulaması beklendiği gibi çıkmıyor? _ –

cevap

7

start komutunu kullanmanız gerekir. Aslında, yeni bir komut istemi bile göremiyorum ama cmd.exe'un task manager'u kullanarak kesinlikle başladığını kontrol edebilirsiniz.

ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "start"); 

rağmen, aynı işlevselliği Runtime.exec() kullanılarak elde edilebilir ve bu aslında yeni bir komut istemi açılır.

Runtime.getRuntime().exec("cmd.exe /C start"); 
+0

ProcessBuilder beklendiği gibi çalışmıyor (Çok ama çok garip buluyorum) - Ama "exec()" yöntemi işi yapıyor. Teşekkür ederim! – Birdman

+0

Dize [] cmd = yeni Dize [] {"cmd.exe", "/ C", "başlat"}; ProcessBuilder pb = yeni ProcessBuilder (cmd); Süreç işlemi = pb.start(); – user77115

+0

Ne/C ne anlama geldiğini bilmiyorum, bu C sürücüsünün yolu değil – john

12

böyle komutları ayırmalısınız ProcessBuilder ile kullanmak için: Eğer otomatik mekanik denilen ve "benim arabam çalışmıyor" desem

final List<String> commands = new ArrayList<String>();     

commands.add("cmd.exe"); 
commands.add("/C"); 
commands.add("start"); 
ProcessBuilder pb = new ProcessBuilder(commands); 
pb.start(); 
İlgili konular