Sublime Text 2

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

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

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

    - 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!");
    }
    }
  4. nomis
    저는 아래의 방법으로 Java Build 를 실행할 수 있었습니다. ^^;

    http://nomis.tistory.com/205
  5. 박하림
    파이썬도 어떻게 하는지 알려주세요 ㅠㅠ
    이것때문에 거이 일주일동안 삽질만 하고 있어요.
  6. :.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을 하면 프로그램 실행과정(?)이 밑에 창으로 안 뜨더라고요.
    그래서 지금은 폴더로 찾아가서 직접 실행시키고 있습니다.

    해결해주세요.
  7. 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]
  8. jang
    Compiling helloword.java........

    [Finished in 0.8s]

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

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

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

    http://www.tutsnut.com......51/
  9. 나무마루
    node.js를 하려면... 음...
  10. 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"
    }
    집어넣고 저장하니 되네요;;;; 뭔가 찜찜하게 해결한 기분.
  11. 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]
  12. bestktw
    [Decode error - output not utf-8]
    이 에러는 어떻게 해결해야 될까요 ㅜ

    파이썬 빌드 파일에 encoding추가해도 해결이 안되네요 ㅜㅜ
  13. 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 링크에 방법대로 한글폴더를 영문폴더로 변경하시고 따라하니까 제대로 동작하는 것 같습니다. :)
        버전 관리
        egoing
        현재 버전
        선택 버전
        graphittie 자세히 보기