오늘부터 자바를 공부하고 있습니다. 신체검사에 문제가 없으면 1월부터 KTDS 신입사원 교육에 들어가는데요, 거의 자바 관련 교육이 많더라구요. 저는 자바의 J 자도 모르기 때문에 교육 들어가기 전에 미리 공부를 하려고 합니다. 게다가 실무 가서도 거의 자바를 다루는 것 같더군요. 따라서 앞으로 자바만 열심히 팔 생각입니다. 자바 선배님들 계시다면 공부에 관해 조언해주시면 감사하겠습니다.

우선 제가 자바에 입문하기 위해 선택한 책은 Head First Java입니다. 대충 검색해보니 좋다고 추천하시는 분들이 많더군요. 사실 구입은 지난번에 했지만 공부 시작은 계속 미루고 있었습니다. 그러다 오늘부터 시작을 했는데 초반부터 막혀서 고생을 좀 했습니다.

43 페이지에 있는 예제를 java로 저장해서 컴파일 하는데는 문제가 없었는데, 실행을 하니 오류가 나더군요.

public class MyFirstApp {
     public static void main (String[] args) {
          System.out.println("I Rule!");
          System.out.println("The World");
     }
}

오류 내용은

Exception in thread "main" java.lang.NoClassDefFoundError: MyFirstApp/class

구글링 해보니 해결책은 금방 찾을 수 있었습니다. 실행할 때 뒤에 .class를 붙이면 안 되더군요. ㅠㅠ
아무튼 자바의 J 자도 모르는 완전 초짜라서 초반부터 이렇게 삽질을 했습니다.




그런데 한가지 불편한 점이 생겼습니다. 컴파일 할 때 커맨드 창을 띄운 다음 javac class.java 를 수동으로 타이핑 하는게 너무 귀찮더군요. 마찬가지로 class 파일의 실행 결과를 보려고 java class 입력하는 것도 너무 귀찮았습니다. 그래서 머리를 굴려 마우스 우클릭으로 해결하기로 마음먹었습니다. 지난번에 제가 VHD 마운트 때문에 한번 만들어본 경험이 있어서 이건 수월하게 만들 수 있었습니다.

우선 java 파일을 class로 컴파일 하는 작업을 마우스 우클릭으로 하시려면 아래 예제처럼 REG 파일을 만들어 등록해주시면 됩니다. 그러면 확장자 java 파일에 우클릭 했을 때 Compile 메뉴가 등장합니다.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.java]
@="Compile"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Compile\shell\Compile]
@="Compile"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Compile\shell\Compile\command]
@="C:\\Program Files\\Java\\jdk1.6.0_21\\bin\\javac.exe \"%1\""


파란색 부분만 주의하시면 됩니다. javac.exe의 경로를 적어주셔야 하는데 폴더 구분은 역슬러시 2개가 들어갑니다. 각자 자바 버전에 따라 경로는 다를 것이기 때문에 이렇게 수동으로 설명을 드립니다.




다음은 class 파일을 실행하는 부분인데요, 여기에는 2가지 작업이 필요합니다. 왜냐하면...

일단 위에서 말씀드렸듯이 실행할 때 확장자 .class가 들어가면 오류가 발생합니다. 그런데 파일명을 %1으로 받아주면 전체 경로와 확장자까지 받아주게 됩니다. 따라서 CMD 파일을 따로 하나 만들어 %1 대신에 %~n1로 확장해줘야 합니다. 레지에는 %~n1을 적어주니 문자 그대로 받아들이더군요.

또 다른 이유는 설령 실행이 된다 하더라도 실행만 되고 바로 창이 꺼져버리기 때문에 출력 결과를 확인할 수 없습니다. 따라서 저는 CMD 파일 마지막에 pause를 한번 걸어줍니다.

우선 아래 예제를 CMD 파일로 저장한 다음 환경변수 PATH에 등록된 아무 위치에나 두세요. 저는 C:\Windows 경로가 편하기 때문에 거기에 복사해둘 생각입니다.

@echo off
"C:\Program Files\Java\jdk1.6.0_21\bin\java.exe" "%~n1"
pause
exit


이것도 마찬가지로 파란색 부분에 java.exe 파일 경로만 잘 적어주시면 됩니다. 물론 CMD 파일의 경우 레지스트리랑 달리 위 경로가 환경변수 PATH에 등록되어 있는 분들이라면 그냥 전체 경로를 적지 말고 java.exe만 적어주셔도 됩니다.

위 내용물을 예를 들어 C:\Windows 위치에 javarun.cmd 파일로 저장했다면, 레지스트리 등록은 아래 예제처럼 해주시면 되겠습니다.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.class]
@="javarun"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\javarun\shell\javarun]
@="Run"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\javarun\shell\javarun\command]
@="C:\\Windows\\javarun.cmd \"%1\""


이것도 마찬가지로 파란색 부분만 주의해주시면 됩니다. 저는 javarun.cmd 파일을 만들어 C:\Windows 위치에 복사를 해뒀기 때문에 저렇게 적어줬습니다. 역시 폴더 구분은 역슬러쉬 2개씩을 입력합니다.

작업이 잘 되었다면 아래 그림처럼 class 파일에 우클릭 했을 때 Run 메뉴가 등장할 것입니다.



실행 결과 출력이 잘 되었습니다.




별로 중요하지 않은 내용이지만, 혹시라도 저처럼 자바 공부를 이제 막 시작하시는 분들이 짧은 예제 파일을 만들어 놓고 컴파일, 실행하는 과정이 귀찮게 느껴지셨다면 도움이 될까 싶어 올려드렸습니다. 자바랑 관련이 없는 분들이라면 윈도우 레지스트리를 저렇게 활용할 수 있다는 정도만 알아두시면 될 것 같습니다.


※ 글 올리자마자 트위터로 이클립스에 대해 말씀해주신 분이 계셨습니다. 그러니까 위 방법은 결국 삽질입니다만... 윈도우 레지스트리 우클릭 메뉴에 대해 공부했다고 생각해주세요. ^^
신고
Share
  1. 이전 댓글 더보기
  2. BlogIcon blc
    2010.12.13 15:55 신고

    head first를 입문자들에게 많이 추천해주더군요. ㅎㅎ

    저도 java는 아니지만 head first의 다른 책을 읽어봤는데
    딱딱하지도 않고 괜찮아서 다른 책도 읽어볼 예정입니다. ㅎㅎ

  3. BlogIcon 들장미
    2010.12.13 16:29 신고

    응용력이 참, 좋은 것 같습니다. ^^;;
    재미있을 것 같은데요.

  4. asdf
    2010.12.13 16:42 신고

    자바 하시면 이클립스 써보세요 ㅎㅎ
    http://eclipse.org/

    • BlogIcon 천사친구™
      2010.12.13 17:28 신고
      수정 및 삭제

      단순히 궁금해서 여쭙습니다.
      이클립스가 뭐하는 건가요? 먹는건가... -_-

    • BlogIcon 작은거인규
      2010.12.18 10:00 신고
      수정 및 삭제

      천사 친구님
      이클립스는 자바를 컴파일 하기 위한 오픈소스 툴이에요
      우리나라에서 자바로 프로그램 만드시는 분들의 80%는 이클립스를 사용합니다

      안드로이드 같은 어플 만들때도 자바가 사용되는데 이클립스 툴을 사용해야 컴파일이 간단하고 편합니다

      단점은 프로그램이 겁나 무겁습니다

      넷빈즈도 있고요
      근데 사용을 안해봐서요
      스누피님 처럼 간단한것들 공부하실때는 에이드플러스를 이용해서 자바패스 설정을 해 단축키 하나로만 컴파일,싱핼 하는법도 있고요 ^^

  5. ㄴㅇㄹ
    2010.12.13 18:40 신고

    eclipse 추천
    아 이거 왠지 무거워 한다면 netbeans 추천

    둘 다 한번 써보고 판단을~!

  6. BlogIcon 박문식
    2010.12.13 18:42 신고

    전 신세대?답게? C#배우고 있어요

  7. seokhyeonwoo
    2010.12.13 19:30 신고

    저는 C++ 조금...

  8. 컴초보
    2010.12.13 19:40 신고

    스누피님 안녕하세요~
    날씨가 추운대 감기 조심하세요^^
    오늘도 역시나 스누피님 강좌들중 궁금증이 생겼습니다^^;;
    컴퓨터 관련 팁 -> 고스트 자동 복구 DVD만들기 내용중...boot.win파일을 마운트하고 setup파일을 지우고 교체할려는대 삭제가 안됩니다..ㅠㅠ어떻게 해야될까요...마지막으로 setup파일은 어떻게 만드나요?만들수만 있다면....꼭 해보고 싶은게 있습니다..이미 존재는 하지만...받을수가 없어서 만들려고 하느건대요.
    내용은 1.윈7 설치 2.윈7 만능고스트 32비트 3.윈7 만능고스트 64비트 4. xp pro 32비트 5. 파티션 매직
    6. 고스트32 수동 7.리셋 이렇게 되있는걸 만들고 싶습니다...기회가 되시면...만드는 방법 강좌점 부탁드리겠습니다...겨울 날씨가 쌀쌀하니 건강 유의하세요^^

  9. Nvdie
    2010.12.13 19:55 신고

    저는 학교에서 프로그램언어 수업으로 자바를 배우고 있는데요.

    생성자가 어떻니 뭐니 ㅠ.ㅜ...
    고등학교때는 c언어를 했지만 여전히 안되는 머리로 할려니
    2번 해도 잘 모르겠더라구요.. ㅠ.ㅜ

    열심히 하셔서 좋은 성과 있길 바랍니다.

  10. Tronos
    2010.12.13 20:51 신고

    자바 개발자분들은 보통 eclipse많이 사용하죠. 가장 많이 사용하는 java ide답게 컴파일도 단축키 하나로 쉽고 결과확인도 output창에서 바로 확인하고 좋습니다.
    자바 하시게 되면 위처럼 하기보다는 이클립스로 처리가 가능하니.. 미리 익숙해 지시는 것도 좋겠네요.

  11. BlogIcon starbros
    2010.12.13 20:57 신고

    스눕님도 앞으로 하실일이 프로그래밍쪽이신가요?
    c공부좀 하셨다면 java배우기는 정말 쉬울껍니다. 워낙 자유롭고 응용이 다양해서요.
    그리고 안드로이드로 가는 지름길이기도 하지요. ^^ eclipse는 무겁고 editplus라는 언어용편집툴 추천합니다.

    • BlogIcon snpbox
      2010.12.14 05:36 신고
      수정 및 삭제

      아마 프로그래밍 하지 않을까 싶어요. C를 대충 한번 봤기 때문에 말씀하신대로 자바는 빨리 볼 수 있을 것 같습니다. ^^

  12. purelsw
    2010.12.13 22:10 신고

    제가 자바쪽 교육을 받았는데요
    자바를 처음 배우는 입장에서 head first 시리즈보다는
    차라리 열혈강의나 자바의정석이 훨씬 배우기 쉽게 느껴지실꺼에요
    책에 대한 호불호는 사람마다 다르지만 head first보다 다른 책을 보는걸 추천해 드립니다.

    이클립스라는 무료 개발툴 사용하시면 프로그래밍하시기 편하실꺼에요

  13. BlogIcon Windia
    2010.12.13 23:16 신고

    Eclipse 쓰는 유저인데 저런 방식으로도 할 수 있었네요....!?
    Eclipse 자체가 굉장히 무겁다보니 힘들었는데 좋은 정보 얻어갑니다 ㅠ

  14. BlogIcon HC.2PC
    2010.12.14 00:10 신고

    네트워크지원 또는 다중 프로그래밍 작업을 안하는
    단순 프로그래밍일 경우에는 EditPlus나, UltraEdit를 추천합니다~
    (홈페이지 연동도 하신다면 Eclipse 추천해드리는데.. ㅎㅎ;;)

    이유는.. 컴파일 및 실행까지 단축키 설정으로 되죠 :-D

    단축키 설정법까지 남기고 싶지만.. 손놓은지 오래라 까먹었네요 ㅎㅎ;;

  15. 시살
    2010.12.14 04:01 신고

    내용과 상관없이 궁금한게 있습니다.
    컴퓨터에 일자무식이라ㅡㅡ;
    스누피님 요새 주로 윈도우7위주로 포스팅하시는데
    부팅시간에 의문이 생깁니다.
    xp나 윈도우7이나 부팅후 하드를 긁어대는데
    그 시간동안은 인터넷조차도 원할하게 사용하기 힘듭니다.
    유난히 윈도우7의 경우는 그 시간이 두배는 되는것 같습니다.
    윈도우7의 장점중에 부팅이 빠르다는것도 중요한 부분인것 같은데,
    실제로는 부팅후 원활하게 사용은 xp가 더 빠르게 느껴집니다.
    저만에 착각인가요? 아님 무지 산물인가요?

    • 파크가든
      2010.12.14 02:58 신고
      수정 및 삭제

      SSD 추천합니다
      스눕님이 동영상으로 보여 주셨듯이
      바탕화면 뜸과 동시에 인터넷 뿐만아니라 프로그램 실행도 가능합니다 ㅋ

  16. zerongee
    2010.12.15 16:15 신고

    개발 능력은 곧 구글링 능력이니라..ㅋㅋ
    스누피님이 자바 공부 하신다니 긴장이 되는군요.
    막강 경쟁자 한 분이 추가가 된니....살살 하시길...ㅋㅋ

  17. BlogIcon 길용
    2010.12.16 09:25 신고

    eclipse 쓰다보면 저런 커맨드창에서 컴파일하는것도 다 까먹게 되던뎅..

    즐코딩하세요^^

  18. BlogIcon 작은거인규
    2010.12.18 10:02 신고

    메모장은 사용 안하시겠고
    에디트 플러스를 사용하시나요?
    이클립스를 사용하시나요?

    자바는 가비지 컬렉션때문에 자동으로 메모리가 해제되서
    메모리 관리가 안되는 단점이 ㅠㅠ
    C++ 처럼 메모리 해제를 편하게 하면 좋은데~

    공부 열심히 하세요


  19. 2010.12.19 03:59 신고

    윈도우에서 이클립스말고 도 다른툴이 많이 있고요.

    우분투나 맥OSX에서 학습하시는것이 윈도우 보다 편하게 그리고 빠르게(!!) 작업이 가능하답니다...

    환경이 쾌적해야 집중도와 효율이 좋답니다.

  20. BlogIcon 황타
    2010.12.21 18:19 신고

    지금은 파일 하나로만 작업해서 문제가 안될텐데, 나중에 패키지를 나누다 보면 복잡해질 것 같네요~^^
    뭐.. 물론 그때가 되면 이클립스를 사용할 것 같지만요.
    저도 우선은 에디트플러스 추천드려요~
    설정만 잘해놓으면 편하게 컴파일하고 런 하실 수 있어요

  21. 다물군의후예
    2011.12.17 10:25 신고

    클래스 역컴파일을 검색하다가 이곳을 찾게 되었습니다.

    컴파일이 되니 역컴파일도 되겠다 싶어서 했더니 되더군요..

    역컴파일 된 자바파일을 보니 한글이 다 깨지더군요..

    찾아보니 옵션을 줘야되는데 옵션을 줬더니 역컴파일 자체가 되지 않는 불상사가...ㅎㅎㅎ;;;

    이 난감한 상황을 어찌하면 좋을까요?? 조언을 구해볼까하고 이렇게 글을 남겨봅니다...

    그럼 행복하시고 부자되세요!! ^^