사실 java를 굳이 이클립스나 안드로이드 스튜디오를 두고, sublime text로 빌드할 필요성은 없다
다만 왠지모를 IDE의 그 묵직함이 싫기에 어떻게든 어떻게든 자바또한 sublime text로 빌드하는데에 성공했다.
사실 sublime text 내 콘솔로 실행시키는 것은 전혀 어렵지 않다. 다만 이 경우 (파이썬 코드와 마찬가지로) 인풋을 받아주질 않는다.
그렇기에 terminal 을 열어서 외부 콘솔로 실행시키는 것이 중요하다.
** sublime-build의 cmd 명령으로는 terminal의 실행시에 path 설정은 가능해도, terminal에게 명령문을 인자로 전달해줄 수는 없다.
그렇기에 osascript (apple script)을 사용하기 때문에 이 빌드는 mac os X에서만 실행가능하다. 기타 운영체제는 .bat 파일을 만들어
사용하면 될 듯 하다. bat 파일을 이용한 설정은 내용이 많기에 생략! (+기타 파일을 만들지 않겠다는 노력..) **
일단 sublime-build 코드 이다.
스크린샷을 참고하여 new build system 을 만든후 해당 코드를 복붙하고 Packages-Users 폴더에 저장하면 된다.
코드 설명을 하자면,
javac \"$file\" : javac 명령어를 내부 콘솔을 통해 실행시킨다. javac 명령어로 ${file_base_name}.class가 생성된다
이후부터가 apple script를 이용한 명령이다.
osascript -e 'do shell script (\"open -a Terminal \" & \"\\\"${file_path}\\\"\")' -e 'delay 0.5' -e 'tell application \"Terminal\" to do script (\"java ${file_base_name}\") in tab 1 of front window'
osascript -e 'do shell script (\"open -a Terminal \" & \"\\\"${file_path}\\\"\")' :
애플 스크립트에게 스크립트를 실행시킨다. 내용은 터미널을 !!!"${file_path}"!!! 인자를 주어 열어라! 이다. 중요한건 저 file_path에 ""가 들어간다는거. 이 부분이 정말 어려웠다. 이미 ",',\"를 모두 사용한 상황에서 또 한번의 indentation이 들어가야 하는데 이를 어찌 해결하는지...
일단 결론부터 말하자면 \\\" 이다. 명령을 실행하면 script가 받는 값은 \" 이 될테고 이는 곧 "로 터미널에게 전달된다.
-e 'delay 0.5' :이후 0.5초의 딜레이를 준다. 안줄경우 터미널이 열리기도 전에 뒤 명령어가 실행되어 터미널이 2개가 열려버린다.
-e 'tell application \"Terminal\" to do script (\"java ${file_base_name}\") in tab 1 of front window': 이후는 그냥 간단하다. 터미널에게 java 명령어로 생성한 .class 파일을 실행시키라는거다.
물론 java가 깔려있어야겠죠??
끝!
'Programming' 카테고리의 다른 글
코딩용 글꼴 무엇을 쓸까? (0) | 2017.02.26 |
---|