ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 극한의 자바 jar 파일 만들기
    프로그래밍/Java 2020. 5. 20. 18:24
    반응형

    안녕. 극혐 자바를 또 건들일이 생겼어! 정말 징그럽고 위험한 생물체로군...

    예전에 만들어 놓은 jar 파일 소스를 좀 수정해야할 일이 있어서 소스를 받아서 수정한 뒤 실행하니 실행이 안되었지 뭐야. 

    하지만 저번에 극한의 자바 컴파일을 경험한 나로썬 조금 면역력이 생겨버린거지. 하지만 저번엔 단지 컴파일만 했을뿐.. 이번엔 jar 파일이 필요해!!! 왜냐면 파이썬에서 jar 파일을 불러 써야 하기 때문이야!!

    시작한다.

    일단 git으로 clone을 받아 

     - bin/

     - src/

     - .settings/

     - .project

     - .classpath

     - commons-codec-1.11.jar


    일단 maven, gradle 같은 건 쓰지 않은 굉장히 Old한 자바 프로젝트지

    Cmd 창으로 뭐 해보려고 java -jar, java -cp 등등 해서 해봤는데 안되서 이클립스로 직행했다. 숨죽여 숨어있던 이클립스 녀석 멱살을 잡아서 수면위로 끌어올렸다. 이 녀석은 오랜만에 실행되서 그런지 처음에는 굉장히 낯설어 하더니 결국 이렇게 저렇게 프로젝트를 불러대더니 나에게 뭘 해야하냐고 물었다.

     이클립스 : "주인 내가 뭘 해야 하지..?"

     창수 : "말 대꾸 하지마!!!"

    나는 거칠게 그의 프로젝트 익스플로러에 오른쪽 버튼을 누르고는

      이클립스 : "읔.,.,!!!"

    Import -> Existing Projects into Workspace를 눌러 예전 소스 프로젝트가 있는 곳을 선택한 후 불러왔다.

      이클립스 : "거긴 안돼.. 읔..!! 그렇게 거칠게 다루다간 프로젝트 경로들이 꼬일지 몰라!!!!"

    나는 전혀 상관하지 않고 프로젝트를 선택한뒤 F5를 광클하고 오른쪽 버튼을 누른뒤 Run As -> Java Application을 선택해 실행시켰다.

    잘 실행되었고 나는 이클립스 녀석이 기특해졌다.

      창수 : "이 녀석.. 오랜만이지만 그대로구만 칭찬해주지"

    하지만 난 간과하고 있었다. 이 프로그램은 Arument를 넣어줘야 한다는 것을... 나는 성급히 Run As -> Run Configurations.. 에 들어가 Arguments 탭의 Program Arguments: 에 test라고 입력했다.

    그가 뱉어낸 것은 충격적이게도 

    더보기

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64 at ~~) at ~~(~~.java:27) at ~~(~~.java:13) Caused by: java.lang.ClassNotFoundException: org.apache.commons.codec.binary.Base64 at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 3 more

    순간 나는 너무 화가 나서 소리를 지르고 말았고, 이내 후회하고 말았다. 그건 그 녀석의 잘못이 아니었다. 그 녀석은 잘못한 것도 없으면서 미안해했고 나도 미안했지만 표현하진 않았다. 이 때 사과를 했었다면 지금의 나는 달라졌을까..    가끔 그때 생각이 난다.

      NoClassDefFoundError은 언제나 나의 주적이었다. 우린 서로를 끔찍이도 싫어했지만 자주 부딪혔고 번번이 나는 져버렸다. 하지만 나는 예전의 내가 아니었으므로 이번엔 달랐다.

      정신을 차린 나는 프로젝트 Clean을 시도하고 src 폴더만 남긴채로 class들이 잠자고 있는 bin 폴더를 날려버렸다. 어차피는 나는 깃을 쓰고 있었으므로 다시 되돌리고 싶다면 git checkout . 이면 다시 되돌릴수 있었으니깐

    그리고 다시 발견한 오류 한줄 

    오류: 기본 클래스 ~.~을(를) 찾거나 로드할 수 없습니다.

    하지만 포기하지 않았다. 과거를 떠올렸다. 오류를 맞딱뜨리고는 울며 포기하는 과거의 나를.. 과거의 기분을.. 응원하는 이클립스의 모습을! 사실 이클립스는 항상 나를 도와주고 있었고 우리는 서로 잘못된 시간과 잘못된 장소에 있었을 뿐이었다.

    Project -> Properties에 들어가 Libraries탭에 들어갔다. 그 순간 내 눈에 들어온 것은 싸늘히 식은 commons-codec-1.11.jar 과 그 뒤에 붙은 missing과 그 앞의 경로...

    그렇다 이클립스는 단지.. 예전에 설정된 대로 설정파일을 불러왔을 뿐이었다.

    나는 단호히 그 라이브러리를 remove 해버리고 Add JARs..를 눌러 새로운 commons-codec-1.11.jar 를 선택했다.

    그리고 Run As -> Java Application을 선택하니 select Java Application이라는 창이 떴다. 반가운 얼굴이었다. 내 가슴은 성공을 기대하며 뛰었다.

    Main을 선택하고 실행하니 이클립스가... 웃었다.

    우린 서로를 얼싸안고 기뻐했고 그와 나는 서로를 용서했다. 이젠 싫어하지 않아!

     

    실행되는 것을 확인하고 오른쪽 버튼 Export -> Java -> Runnable JAR file -> Finish로 jar 파일을 만들었고

    cmd 창으로 java jar ~.jar test로 결과가 제대로 나오는 것을 확인했다.

     

    우리는 말없이 서로를 바라보았다.

    반응형

    댓글

Designed by Tistory. Flag Counter