이 프로그램은 프로그램을 실행하기로되어 있지만 아무 것도하지 않는 프로그램입니다. 명령이 아무것도하지 않는 이유Java exec 메서드가 프로그램을 실행하지 않습니다.
public void findCC_Data(List<String> l7) {
StringBuffer output = new StringBuffer();
Process p;
try {
for(String sql_file: l7) {
String command = "cleartool describe " + sql_file;
p = Runtime.getRuntime().exec(command);
System.out.println("Executing: " + command);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}
if (reader.readLine() == null) {
System.out.println("'reader.readLine()' is equal to null");
}
}
} catch(Exception e) {
e.printStackTrace();
}
System.out.println(output.toString());
}
사람이 알고 있나요과 reader.readLine()
방법은 항상 null를 돌려 다음과 같이 문제의 방법은?
기본적으로 ping 프로그램 대신 cleartool 프로그램을 사용하고 있습니다. 튜토리얼은이 URL에 있습니다 : https://www.mkyong.com/java/how-to-execute-shell-command-from-java/
솔루션 내가 루프 대신 그 안에 외부의 System.out.println(output.toString())
인쇄 문을했다. 이제 루프 내부에서 SOP 문을 움직이면 ClearCase 버전 컨트롤에 대한 정보가 백만 개 더 늘어납니다. 수정하려면 위의 깨진 코드의 루프 안에 output.toString()을 사용하여 SOP를 수정하십시오.
실행중인 ClearCase의 버전은 무엇입니까? 클라이언트 측의 OS는 무엇입니까? 서버 측에서? 동적 뷰에서 Java 프로그램을 실행하고 있습니까? – VonC
p는 null입니다. 나는 당신이 반환 유형을 Runtime.getRuntime(). exec (command) p에 할당하려고한다고 생각한다. –
@omkarsirra 감사합니다.나는 그 과제를 코드에 다시 추가하는 것을 잊어 버렸지 만 지금은 그랬다. 어느 쪽이든 반환되는 것은 아무것도 없습니다 ... 왜냐하면 어떤 일도하지 않았기 때문에 'p'에 대한 과제를 제거했기 때문이죠. 그래서 somone이 디버깅에 도움이 될 수 있도록 다시 추가했기 때문입니다. 여기에서이 관용구를 얻었습니다 : https://www.mkyong.com/java/how-to-execute-shell-command-from-java/ – user3870315