를 지정했습니다. 다음은 내 코드원인 때 java.io.IOException : CreateProcess를 오류 = 2, 파일을 찾을 수 없습니다 내가 자바를 통해 'VACUUM VERBOSE'명령을 실행하려고
public void executeCommand()
{
String cmd1= "cmd.exe /c start";
String location="C:\\PROGRA~1\\PostgreSQL\\8.3\\bin\\";
String postgresCommand="psql -h localhost -U postgres -d postgres";
String autoVaccum="-c \"vacuum verbose\"";
String []actualCmd={cmd1,location,postgresCommand,autoVaccum};
Process process=null;
try {
process = Runtime.getRuntime().exec(actualCmd);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
MyTest test= new MyTest();
test.executeCommand();
}
입니다하지만 직접 직접> 실행 창 자사가 실행 성공적으로 예 : 시작 -에 위의 문자열을 입력 할 때 나는 다음과 같은 예외를
java.io.IOException: Cannot run program "cmd.exe /c start": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at MyTest.executeCommand(MyTest.java:36)
at MyTest.main(MyTest.java:48)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 5 more
을 얻고있다. cmd.exe/C start C : \ PROGRA ~ 1/PostgreSQL/8.3/bin/psql -h localhost -U postgres -d postgres -c "vacuum verbose"
위의 프로그램에서 정확히 무엇이 잘못되었는지 알 수 있습니까? ?
감사 토마스, 나는 내 코드에 약간의 수정을했다. String 배열 대신 단일 문자열을 사용했으나 문제가 해결되었습니다. 문자열 actualCmd = cmd1 + location + postgresCommand + autoVaccum; 그러나이 프로그램은 "VACUUM VERBOSE"명령으로 수행되는 작업을 보여주는 명령 줄 창을 열지 못합니다. 그러나이 프로그램을 사용하여 다른 명령을 실행하면 명령 줄 창이 열립니다. 예 : 문자열 cmd1 = "cmd.exe/c 시작 디렉토리"; 는 기본적으로 나는 프로세스 개체의 출력을 얻기에 사용자 – Abhi
참조 업데이트에 '진공 명령'의 출력을 보여주고 싶었어요. – Thomas