본문 바로가기

Programming

Sublime Text Java compile and run with sublime-build

사실 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