Sublime Text 2

서브라임 텍스트 2에 대한 수업입니다.

빌드

빌드란? 

외부의 프로그램을 이용해서 소스 코드를 실행하는 방법으로 컴파일이나 배치작업 등에 사용 할 수 있다.

사용방법

메뉴에서 tools > build를 선택하면 빌드가 실행된다. 특정한 방식으로 빌드를 하고 싶다면 메뉴 Tools > Build System 에서 사용하고 싶은 빌드를 선택하면 된다. Automatic은 sublime text가 파일의 확장자를 보고 알아서 빌드를 선택한다. 

자바 컴파일 & 실행

1. 자바(JDK)를 설치한다.
http://www.oracle.com/technetwork/java/javase/downloads/index.html

2. 자바를 path에 등록한다.

3. 아래의 코드를 jdk가 설치된 디렉토리의 bin 아래에 만든다. 아래의 코드는 자바 소스를 컴파일하고 실행한다.

윈도우 - runJava.bat

@ECHO OFF
cd %~dp1
ECHO Compiling %~nx1.......
IF EXIST %~n1.class (
DEL %~n1.class
)
javac %~nx1
IF EXIST %~n1.class (
ECHO -----------OUTPUT-----------
java %~n1
)

우분투 - runJava.sh

[ -f "$1.class" ] && rm $1.class
for file in $1.java
do
echo "Compiling $file........"
javac $file
done
if [ -f "$1.class" ]
then
echo "-----------OUTPUT-----------"
java $1
else
echo " "
fi

4. 빌드에 대한 설정파일은 빌드명.sublime-build 파일에 json의 형식으로 저장되어 있다. java의 경우 기본 빌드 옵션으로 들어있기 때문에 java 패키지 안에 Javac.sublime-build 파일을 수정한다. 메뉴 Preferences > Browser Package 를 선택하고 그 중 java 디렉토리에 JavaC.sublime-build 파일을 연다. 

5. 파일의 내용 중 cmd 행을 아래와 같이 수정한다.

윈도우 

"cmd": ["runJava.bat", "$file"],

우분투

"cmd": ["runJava.sh", "$file_base_name"],

6. java 파일을 연다. 

class hello {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

7. 메뉴 Tools > Build 를 선택한다. 아래와 같이 출력된다면 성공한 것이다.

참고

언어별 빌드 파일 모음 (영문)

댓글

댓글 본문
  1. php가 첫취업?
    php로 하는법좀 알려주셨으면 좋겠습니다..해당 링크로 파일 저장후...빌드 설정 했는데도 컴파일이 제대로 안먹네요 ㅠㅠ
  2. Bash
    Mac OS에서 Sublime Text로 자바 실행하는 방법 간단합니다.

    http://blog.naver.com......894
  3. Chizcake
    전 OSX Yosemite 10.10.5 버전을 사용하고 있습니다.
    강의 내용에서는 OSX에 대한 빌드 시스템이 언급되어 있지 않아서, 아래에 남겨주신 댓글들과
    구글링을 사용해서 제 나름대로 쉘 스크립트를 작성해서 돌려봤는데 클래스의 수가 많아지거나
    인터렉티브가 필요한 상황에서는 원하지 않는 결과값을 얻는 경우가 많았습니다.

    그래서 "javatar"라는 패키지를 설치해 사용해봤는데, 정말 괜찮네요 :)
    혹시 저처럼 빌드 시스템이 잘 구축되지 않는 분들은 한번 참고해보셔도 좋을 것 같습니다.
  4. JustStudy
    고맙습니다.
  5. 꾸꾸
    전 배치 파일 없이 아래와 같이 해서 빌드 수행했습니다 ^^

    - sublime3 -> Preferences -> browser packages -> java 폴더내 "JavaC.sublime-build" 편집
    ex) C:\Users\사용자명\AppData\Roaming\Sublime Text 2\Packages\Java\JavaC.sublime-build
    {
    "cmd": ["javac -encoding utf-8", "$file_name","&&","java", "$file_base_name"],
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    "path": "C:\\Program Files\\Java\\jdk1.8.0_51\\bin\\",
    "selector": "source.java",
    "shell": true,
    "encoding": "cp949"
    }

    아래와 같이 오류가 발생할 경우.. 시스템변수 설정 확인 !
    "오류:기본클래스 을(를) 찾거나 로드할 수 없습니다."
    http://blog.naver.com......633

    (생성)CLASSPATH / %JAVA_HOME%\lib;.; (환경변수 classpath에 .; 추가!!)
    (생성) JAVA_HOME / C:\Program Files\Java\jdk1.8.0_51
    (추가) Path / %JAVA_HOME%\bin;

    - 테스트 코드 (Hello.java) -> 파일명과 클래스명 동일
    public class Hello
    {
    public static void main(String argv[])
    {
    System.out.println("Hel한글lo World!");
    }
    }
  6. nomis
    저는 아래의 방법으로 Java Build 를 실행할 수 있었습니다. ^^;

    http://nomis.tistory.com/205
  7. 박하림
    파이썬도 어떻게 하는지 알려주세요 ㅠㅠ
    이것때문에 거이 일주일동안 삽질만 하고 있어요.
  8. :.7h
    맥북 에어 인데요. Xcode로 했던 것이 Sublime Text 2에서는 안 되네요.
    아래 처럼 했는데 안 되더라고요. 코드에는 문제가 없는데.


    testheader.h
    -------------------------------------------------
    #ifndef __TESTHEADER_H__
    #define __TESTHEADER_H__
    #include <iostream>

    int ThingsWeMade(int big, int small);

    #endif
    --------------------------------------------------



    testheader.cpp
    -------------------------------------------------------------------
    #include "testheader.h"
    int ThingsWeMade(int big, int small)
    {
    if(big%small == 0)
    {
    return small;
    }
    else
    {
    return ThingsWeMade(small, big%small);
    }
    }
    ----------------------------------------------------------------------------



    test.cpp
    -----------------------------------------------------------------------------
    #include "testheader.h"
    using namespace std;

    int main()
    {
    int n1, n2, answer;
    cin>>n1>>n2;
    if(n1>n2)
    {
    answer = ThingsWeMade(n1, n2);
    }
    else
    {
    answer = ThingsWeMade(n2, n1);
    }
    cout<<answer<<endl;
    return 0;
    }
    -------------------------------------------------------------------------------




    오류
    ---------------------------------------------------------------------------------------------------
    Undefined symbols for architecture x86_64:
    "ThingsWeMade(int, int)", referenced from:
    _main in test-1b3359.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    [Finished in 0.3s with exit code 1]
    ----------------------------------------------------------------------------------------------------



    혹시나 해서 test.cpp의 #include "testheader.h"를 #inlcude "testheader.cpp"로 하니까 되더군요.

    이거 왜 그런 건가요?


    .



    그리고 또, 맥에서만 그런 건지 C++만 그런 건지 Build를 하고나서 Run을 하면 프로그램 실행과정(?)이 밑에 창으로 안 뜨더라고요.
    그래서 지금은 폴더로 찾아가서 직접 실행시키고 있습니다.

    해결해주세요.
  9. jang
    여기에는 설치 방법에 대해서는 없지만, 맥 OS 요세미티에서도 성공적으로 작동이 되네요.

    추가적으로 아래 소스를 적용하면 맥에서는 빌드 성공하면 터미널에서 출력 되는것까지 확인 하였습니다.

    Hello World!
    ________________________________________________________________________________
    Program Executed. [Press ENTER] to continue.

    이런식으로 나오네요.


    우선 설치 방법은 우분투 설치와 유사합니다.
    1. 맥 os용 자바(JDK)를 설치
    2. 자바를 path에 등록한다.
    -이 부분이 좀 까다로운데 아래 링크를 참고하시면 될것 같습니다.
    https://gist.github.com......170
    혹시 .bash_profile 에 대해서 못 찾으시더라도 만들면 됩니다.
    만들어서 export PATH=/usr/local/bin:{...} 로 설정 하시면 됩니다.

    3. 아래의 코드를 jdk가 설치된 디렉토리의 bin 아래에 만든다. 아래의 코드는 자바 소스를 컴파일하고 실행한다.
    .sh 파일을 넣어야 하는 경로는 터미널 관리자 모드에서 "/usr/bin" 에 넣으시면 됩니다.
    EX) sudo cp ~/Desktop/파일명.sh /usr/bin
    ****cp로 복사하시기 전에 chmod 755 파일명.sh 로 권한을 설정해 주셔야 나중에 permission 에러가 발생하지 않습니다. (이점은 우분투에서도 동일 합니다. Permission 에러 났었던 분들은 이점 참고하세요)*****

    소스 코드는

    #!/bin/bash
    # compiles all java files within directory and runs the one being edited in new terminal window.

    for file in *.java
    do
    echo "Compiling $file"
    done
    javac *.java
    RETVAL=$?
    [ $RETVAL -ne 0 ] && exit
    [ $RETVAL -eq 0 ] && (
    echo "Compile Success! :)";
    echo "Running $1.class";

    #Create temporary file (in current directory) to execute compiled java class.
    #Deletes itself after execution.
    echo -e "cd \`dirname \$0\`\nclear\njava $1\necho ________________________________________________________________________________\nread -p \042Program Executed. [Press ENTER] to continue.\042\nrm -f sayhi.command" > sayhi.command;
    chmod +x sayhi.command; open sayhi.command;
    )

    이걸로 하시면 되겠습니다.

    그 다음은 위에 나온 설명과 같이
    4. 빌드에 대한 설정파일은 빌드명.sublime-build 파일에 json의 형식으로 저장되어 있다. java의 경우 기본 빌드 옵션으로 들어있기 때문에 java 패키지 안에 Javac.sublime-build 파일을 수정한다. 메뉴 Preferences > Browser Package 를 선택하고 그 중 java 디렉토리에 JavaC.sublime-build 파일을 연다.

    5. 파일의 내용 중 cmd 행을 아래와 같이 수정한다.
    MAC OS & 우분투

    "cmd": ["파일이름.sh", "$file_base_name"],

    6. java 파일을 연다.

    class hello {
    public static void main(String[] args) {
    System.out.println("Hello World!");
    }
    }

    7. 메뉴 Tools > Build 를 선택한다. 아래와 같이 출력된다면 성공한 것이다. (CMD+X)
    Compiling hello.java
    Compile Success! :)
    Running hello.class
    [Finished in 0.6s]
  10. jang
    Compiling helloword.java........

    [Finished in 0.8s]

    결과창이 이렇게 밖에 안나오네요.. 뭐가 문제일까요 ??

    -----------------------------------------------------------------------------
    아 해결했네요... 알고보니 PATH 경로를 bin까지 설정을 안해놔서 그렇게 됐네요..

    우분투로 설치 하시는분 여기 홈페이지를 참고하시면 될 것 같습니다.경로

    http://www.tutsnut.com......51/
  11. 나무마루
    node.js를 하려면... 음...
  12. kipid
    ST3에서는 JavaC.sublime-build 파일이 어디 있는거죠?
    Preferences > Browser Package 누르면 윈도우 폴더가 열리긴 하는데... 여긴 제가 깐 package들만 들어있던데... 검색을 해도 안걸리구요. =ㅇ=;;

    얼렁뚱땅 해결하긴 했는데... (window 7에서)
    ST3 (portable)\Data\Packages\User 폴더에 그냥 "runJavaC.sublime-build" 생성해서
    {
    "cmd": ["runJava.bat", "$file"],
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    "selector": "source.java"
    }
    집어넣고 저장하니 되네요;;;; 뭔가 찜찜하게 해결한 기분.
  13. dubi
    아래와 같은 에러가 나옴니다 ㅠㅠ

    _______________________________________________________________________________________________
    [Error 2]
    [cmd: [u'javac', u'C:\\Users\\PC\\Desktop\\Day0521\\src\\net\\home\\Danbi.java']]
    [dir: C:\Users\PC\Desktop\Day0521\src\net\home]
    [path: C:\oraclexe\app\oracle\product\10.2.0\server\bin;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared]
    [Finished]
  14. bestktw
    [Decode error - output not utf-8]
    이 에러는 어떻게 해결해야 될까요 ㅜ

    파이썬 빌드 파일에 encoding추가해도 해결이 안되네요 ㅜㅜ
  15. Geni™
    아래와 같이 여전히 에러가 납니다. 다른 해결법이라도 있나요?

    Compiling hello.java.......
    hello.java:3: error: unmappable character for encoding MS949
    [Decode error - output not EUC-KR]
    1 error
    대화보기
    • Geni™
      한글 폴더에 있는 *.java 파일을 빌드하면 하단 building 문구만 나왔다 사라집니다.
      아무런 메시지도 없고 빌드도 되어있지 않습니다.
      무엇이 문제인지요?
    • 나그네
      저두 그렇네요.
      대화보기
      • 꼬래
        빌드시 한글 출력으로 인해 오류가 난다면,

        Preferences > Browse Packages > java > JavaC.sublime-build 에 들어가셔서

        "encoding": "EUC-KR" 라고 추가해 보세요~

        ( 참고 : <a href="http://www.sublimetext.com/forum/viewtopic.php?f=3&t=1535">http://www.sublimetext.com/forum/viewtopic.php?f=3&t=1535</a> )

        < 예 >
        {
        "cmd": ["runJava.bat", "$file"],
        "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
        "selector": "source.java",
        "encoding": "EUC-KR"
        }

        저도 이것 때문에 몇시간 삽질을 했다는... ㅜㅜ
      • 한상수
        질문있습니다.
        출력내용이 "Hello World" 가 아니라 "헬로우 월드" 처럼 한글을 출력하고 싶으면 어떤 설정을 해야 하나요?
      • 콘스탄틴
        몇시간 헤매다가 님 덕분에 살았네요.... 감사합니다.^^
        대화보기
        • hillfolk
          mac에서 사용시에는 어디 부분을 수정해 줘야 하죠? 빌드는 되는데 실행을 자동으로 하진 않네요
        • Jake Yoon
          ubuntu에서 하실 때, Exec Format Error 나시면
          "cmd": ["/bin/bash", "runJava.sh", "$file_base_name"],
          과 같이 수정해주세요. ㅠ.ㅠ.. 삽질많이했습니다.
        • Jominu
          도움이 많이 되었습니다. 감사합니다^^
        • DuRuKang
          원도우 8의 경우 사용자 계정 폴더에 한글이 들어가면 빌드 기능이 제대로 동작하지 않는 문제가 있는 것 같아요. http://snoopybox.co.kr/1614 링크에 방법대로 한글폴더를 영문폴더로 변경하시고 따라하니까 제대로 동작하는 것 같습니다. :)