Skip to content
DarkKaiser의 블로그
DarkKaiser의 블로그
  • 개발 관련 자료(노션)
  • Raspberry Pi(노션)
  • WD My Cloud(노션)
  • GitHub
DarkKaiser의 블로그

배포버젼 .jar 만들기

DarkKaiser, 2009년 5월 17일2023년 9월 6일

출처 : http://blog.naver.com/an5asis/60023239426

jar 파일의 배포버젼 만들기


작성자 : 이 상 문
작성일 : 2002. 1. 9


여러 개의 class 파일로 이뤄진 프로그램을 jar 형식의 파일로 합쳐서 배포할 수 있다. 하나의 파일로 관리할 수 있다는 장점뿐만 아니라, 압축이 되어서 용량도 더 작게 만들 수 있는 장점이 있다. 그리고, 다음에 설명할 exe 파일로 만들어 배포할 때도 이 jar 파일을 이용하면 편리한 장점을 얻을 수 있다. 이 문서에서는 jar 파일의 모든 옵션을 설명하진 않는다. 기본적인 생성 방법과 jar로 압축된 파일에서 실행시키기 위한 manifest 파일 생성 및 추가 방법에 대해서 설명하고자 한다.


jar 파일 생성하기


jar 프로그램의 기본적인 명령 순서는 다음과 같다.



jar <option> <target_file> <src_files>


jar 파일을 생성하기 위한 option은 c 이다. create 혹은 compress의 의미를 가지고 있을 것이라 생각된다. 그리고 압축이 되고 있는 상황을 볼 수 있게 하려면 v 라는 option을 쓰면, 파일의 압축과정을 볼 수 있다. 한가지 더 볼 것은 f option이다. 이것은 <target_file> 이름을 지정할 수 있도록 해주는 option이다. <src_files> 에는 파일이름이나 디렉토리 이름이 올 수 있다. 그럼, JavaAmp의 경우를 예를 들어 살펴 보자. JavaAmp는 myprojects.javaamp 패키지에 포함되어 있기 때문에 디렉토리 구성이 상당히 복잡하다. 그렇지만, package 자체를 jar 파일로 생성해주어야 하기 때문에, myprojects 의 부모 디렉토리로 나와서 myprojects 디렉토리 자체를 jar 파일로 생성해주면 된다. 즉,



jar cvf JavaAmp.jar myprojects


라고 명령을 주면 된다. 압축과정이 나타나고, 결과로 JavaAmp.jar 가 생성되었음을 볼 수 있을 것이다.


manifest 파일 수정하기


jar 파일이 생성되었다. 그런데, 실행은 어떻게 하나? jar 파일로 프로그램을 실행하기 위해서 java 인터프리터에서는 -jar 라는 옵션을 제공하고 있다. 즉, 다음과 같은 명령을 주면 된다.



java -jar JavaAmp.jar


-jar 옵션 다음에는 실행할 jar 파일을 지정하면 된다. 어라! 그런데 실행이 되지 않네? 우리는 main()을 포함하고 있는 클래스에 대한 정보를 전혀 주지 않았다. 그래서 java 인터프리터가 이 위치를 찾지 못해서 이러한 결과가 나타난다. 그렇다면 어떻게 해줘야 할까? 이 장에서 설명하고자 하는 manifest 파일이라는 것을 수정해야 한다. jar 파일은 winzip 프로그램에서도 지원하므로 winzip 프로그램을 이용해서 내부를 살펴보자. Manifest.mf 라는 파일을 찾을 수 있다. 이것이 바로 manifest 파일이다. 이 파일을 꺼내와서 내부를 살펴보자. 두 줄이 쓰여 있는데 version 정보만 들어 있다. 여기에 추가로 main class의 위치를 지정해주면 된다. 즉, 다음 한 줄을 추가하자.



Main-Class: myprojects.javaamp.JavaAmp


수정한 manifest 파일을 다시 jar 파일 내부로 수정해줘야 하는데 어떻게 하면 될까? 기존의 파일을 update 할 경우에는 u 옵션을 사용한다. 그리고 manifest 파일을 변경할 경우에는 m 옵션을 쓴다. 즉, 다음과 같은 명령으로 jar 파일의 manifest 파일을 update 할 수 있다.



jar umf Manifest.mf JavaAmp.jar


이제 다시 JavaAmp를 실행해보자. 이제 프로그램이 실행되는 것을 확인할 수 있을 것이다.


글을 마치며…


jar 파일은 여기에서 소개한 기능 말고도 많은 기능을 포함하고 있다. jar 파일로부터 추출하는 기능, 압축을 하지 않고 그대로 파일을 합쳐주는 기능 등이 있는데, 직접 확인해보도록 하자. jar 프로그램의 간단한 option은 파라메터를 넘기지 않고 그냥 jar 프로그램만 실행시키면 확인해볼 수 있다. 자세한 설명은 이 곳에서 확인해 볼 수 있다.



예)
Manifest-Version: 1.0
Main-Class: XXXXX  <== 실행할 클래스이름(main()이 꼭 있어야 됩니다.)
Class-Path: jcert.jar jsse.jar jnet.jar mm.jar <==필요한 classpath지정

jar cvfm 파일명.jar manifest.mf *.class

Java Javajar

글 내비게이션

Previous post
Next post

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최신 글

  • AssertJ 소개testCompile ‘org.assertj:assertj-core:3.6.2’ 2017년 9월 14일
  • 자주 사용되는 Lombok 어노테이션 2017년 9월 14일
  • 유니코드 #3 2017년 9월 14일
  • 유니코드 #2 2017년 9월 14일
  • 유니코드 #1 2017년 9월 14일

최신 댓글

    카테고리

    • 개인 자료 (1)
      • 일기 (1)
    • 주절주절 (7)
    • 프로그래밍 갤러리 (16)
    • 프로그래밍 언어 (186)
      • Java (29)
      • C/C++/VC++ (114)
      • C# (11)
      • Visual Basic (6)
      • 안드로이드 (9)
      • Objective-C (5)
      • JavaScript (4)
      • JSP/Servlet (2)
      • Python (4)
      • 어셈블러 (1)
    • 개발++ (44)
      • Book (11)
        • Joel On Software (10)
      • 프로젝트 관리 (6)
      • Maven (1)
      • 디버깅 (1)
      • DirectX (1)
      • Silverlight (1)
      • RESTful (1)
      • Hacking (1)
      • WDM (4)
      • VoIP (5)
      • 기타 (1)
    • 개발 도구 (15)
      • eclipse (14)
      • Sublime Text (1)
    • 네트워크 (7)
    • 설치 및 배포 (7)
      • InstallShield (2)
      • NSIS (4)
    • 버전 관리 (9)
      • Git (2)
      • CVS (2)
      • Subversion (5)
    • 데이터베이스 (7)
      • Oracle (3)
      • Sybase (2)
      • MS-SQL (2)
    • 단위테스트 (3)
      • JUnit (1)
      • NUnit (2)
    • 버그추적시스템 (2)
      • mantis (2)
    • 운영체제 (7)
      • Windows (5)
      • 리눅스 (2)
    • WAS (3)
      • WebLogic (3)
    • 디자인패턴 (1)
    • 디지털 이미지 프로세싱 (16)

    태그

    AutoExp.dat CppUnit CreateFile CVS Detours Generic ignore파일 Installer Isolation level LogCat OSI OSI 7 layer PRODUCTION_MODE request RunInstaller Runnable SafeInt session setPoperty startWebLogic.cmd STL synchronized TAB time_t VC Vector VS2005 날짜 디버깅 리치에디트컨트롤 매핑모드 문서화 주석 변환 사설 IP 성능 주석 트랜젝션 트리 프로젝트관리 프로파일러 픽셀 형변환 형식 확장자 히스토그램

    메타

    • 로그인
    • 엔트리 피드
    • 댓글 피드
    • WordPress.org
    ©2025 DarkKaiser의 블로그 | WordPress Theme by SuperbThemes