안녕하세요.
컴퓨터 비 전공자 입니다...
공학계열이 아닌 연구실에서..
여러개의 외부 JAVA 프로그램을 실행하도록 구축한 *.bat 작성과, 해당 *.bat 파일을 자동으로 실행하는
JAVA 프로그래밍을 하는 도중에 질문이 생겨서 글을 올립니다.
제가 처한 사항은 다음과 같습니다.
- Swing 으로 GUI 환경 구축
- JButton 클릭시 *.bat 파일(1분 이상 실행됨)을 ProcessBuilder를 통해 구동
- *.bat 내에 구현하도록 설정한 외부 java 프로그램 Freezing 현상발생
이상하게도,
Button 클릭을 통하여 *.bat 을 실행하면, *.bat 실행 도중 외부 프로그램이 멈춰 버립니다.
- GUI를 제거하고 Main 에서 직접 *.bat 실행 시 아무 문제가 없습니다.
- GUI를 생성하고, Button 클릭에 상관없이 GUI 로드시 *.bat을 실행할 때에도 아무 문제가 없습니다.
ActionListener를 거쳐 ProcessBuilder를 사용하면 문제가 발생하네요..
문제 해결을 위해 다음과 같은 검색을 시도해 봤습니다.
1. 구글검색 : java ProcessBuilder freezing swing
- 해당 검색결과의 문서를 읽어보면, swing이 freeze되는 경우를 설명하고 있습니다.
- 저는 ProcessBuilder를 위한 thread 생성을 통해 swing이 freeze되는 일을 방지했기때문에,
- 해당 문서들은 저에게 도움이 되지 않았습니다.
2. 구글검색 : java Swing Thread
-" Swing또한 새로운 Thread로 처리해야 문제가 해결되지 않을까??" 라는 생각으로 검색해봤습니다.
- 하지만, 아무 효과가 없었습니다.
- 역시나 *.bat이 실행되다가 제 GUI가 아니라 *.bat 실행중에 멈춰버립니다.
도움 부탁드려요. ㅠㅠㅠ
* ps : *.bat 실행중 Freeze 될때, 제 GUI의 Frame을 종료시키면 Freeze가 풀려 *.bat이 성공적으로 수행됩니다....