2012-05-03 6 views
0

좋아, 잠시 둘러 보았는데 내 프로그램에 무슨 문제가 있는지 알 수 없다. cmd.exe 같은 프로그램을 만들려고 해요. 한 명령은 C :/Windows/System32에있는 msconfig.exe를 시작합니다. 그러나 그것은 나에게 때 java.io.IOException를 제공합니다Java에서 msconfig.exe를 시작하는 방법은 무엇입니까?

java.io.IOException: Cannot run program "C:/Windows/System32/msconfig.exe": CreateProcess error=2, The system cannot find the file specified 

여기 내 코드입니다 :

public static void msconfig() { 
    try { 
     Runtime rt = Runtime.getRuntime(); 
     Process process = rt.exec("C:/Windows/System32/msconfig.exe"); 
     InputStream in = process.getInputStream(); 
     OutputStream out = process.getOutputStream(); 
     InputStream err = process.getErrorStream(); 
    } catch (IOException e) { 
     Console.printToConsole("Could not launch msconfig.exe"); 
     e.printStackTrace(); 
    } finally { 
     Console.printToConsole("Successfuly launched msconfig.exe"); 
    } 
} 

편집 : 그래서 나는 이클립스를 사용하여 응용 프로그램을 수출하고 지금은 잘 작동합니다! 도와 줘서 고맙습니다.

+4

처음으로, 나는 당신이 '마침내'어떻게 작동하는지 이해하지 못했다고 생각합니다. 마지막으로, try 블록이 성공적으로 완료되었거나 예외가 발생했는지 여부에 관계없이 항상 수행해야하는 작업을 나타내는 데 사용되는 명령문입니다. 마침내 print 문이 try의 마지막 문이어야합니다. – Ina

+1

이상한. 그것은 나를 위해 작동합니다. 로컬 관리자 권한으로 할 수 있습니까? 그리고 가장 확실한 것은 파일이 있는지 확인하는 것입니다. :-) – maksimov

+0

@maksimov 나는 그것을 많이 사용했고, 파일이 존재한다는 것을 알고있다. 1) 나는이 파일을 디렉토리에서 보았다. 2) 당신은 복사하여 윈도우 탐색기에 디렉토리를 붙여 넣을 수있다. 응용 프로그램이 시작됩니다. – mattbdean

답변

3

경로는 구분 기호로 백 슬래시를 사용하여 \ WINDOWS를 \. 사용

Process process = rt.exec("C:\\Windows\\System32\\msconfig.exe"); 

을 그냥 완전성을 위해, 백 슬래시은 이스케이프 문자이며, 자신을 이스케이프 할 필요가 있기 때문에 두 배로해야합니다.

+0

정말요? 어떻게 든이 코드는 Windows 7 및 Java 6에서 변경되지 않고 작동합니다. – maksimov

+0

@maksimov 먼저 해 보았습니다. 작동하지 않습니다. – mattbdean

+0

@whowantsakookie 그 이유는 나를 downvote하지 않습니다. 네가 그걸 시도했다는 말은하지 않았다. – MarioDS

1

"틀린"백 슬래시를 사용하고 있습니다. \

와 윈도우 경로 작업 경로 C를 시도 : Windows 컴퓨터에 system32를 \ msconfig.exe를

+0

예, 이스케이프 처리 된 백 슬래시가있는 경우 mario의 답변 –

+0

참조 Windows에서는 슬래시를 사용할 수 있으며 입력하기가 더 쉽습니다. 상대 경로 (앞에 "C :"와 같은 드라이브 문자가없는 경우)는 "./icon.gif"를로드하는 경우와 같이 이식성을 얻습니다. –

관련 문제