배포버젼 .jar 만들기

출처 : 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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다