jar파일에서 외부 패키지 사용하기
[출처] jar파일에서 외부 패키지 사용하기|작성자 echris7

사람이 밥만먹고 살 수는 없듯이, 프로그램을 짜다보면 외부 jar파일을 이용해야 하는 경우가
수시로 생기게 된다. 문제는, 내가 짠 프로그램을 jar파일로 배포해야 할때도 내가 사용했던
외부 jar파일이 필요하게 된다는 것이다.
 
내가 만든 jar파일에서 외부 jar파일을 사용해야 한다면 어떤 방법이 가장 좋을까..
내가 생각하기에는 내 jar파일을 만들때 외부 jar파일도 함께 묶고 Class-Path를 잘 지정해
주는것이 가장 좋은 방법이 아닐까 싶다. 이렇게 해놓으면 내 jar파일 내부에 있는 클래스들이
외부 jar파일을 참조할 수 있고, 외부 jar파일역시 내 jar파일 외부로 나와있어서 실수로 삭제되거나
하는 일이 발생하지 않는다.
그런데, 문제는 java의 jar파일은 이러한 기능을 지원하지 않는다는 것이다. 아래는 jar Document
부분의 Class-Path에 관한 내용의 일부이다.
 
===========================================================================
Note: The Class-Path header points to classes or JAR files on the local file system, not JAR
          files within the JAR file or classes on the network
=> Class-Path header 부분에는 사용자의 컴퓨터 내부의 class파일이나 JAR파일은 이용할 수
    있지만 JAR파일 내부, 또는 network 상의 JAR파일이나 class파일들은 사용할 수 없습니다.
===========================================================================
 
이 글에서 볼 수 있듯이 java에서는 jar파일 내부의 jar파일에 대해서 Class-Path를 지원해 주지
않는다. 즉, jar파일 내부에 외부 jar파일을 위치시켜 놓고 프로그램이 무난히 작동되기를 바랄 수
없다는 뜻이다.
 
그렇다면 어떻게 외부 jar파일을 이용할 수 있을까. 크게 두가지 방법이 있다.
1) 외부 jar파일의 압축을 풀고, 압축이 풀린 class들을 내 jar파일에 묶어버리는 방법
2) 외부 jar파일을 내 jar파일의 내부가 아닌 외부에 위치시켜 놓고 Class-Path를 설정하는 방법
 
지금부터 우리는 첫번째 방법을 알아보도록 하겠다. 사실 첫번째 방법은 지금까지 우리가 해왔던
jar파일 생성과 크게 다르지 않다. (단, 간단한 예제이므로 package로 만들지 않았다.)
 
기본적인 jar파일 생성은 아래를 참고하기 바란다
http://blog.naver.com/echris7/140012223153
패키지로 구성되어있는 jar파일 생성은 아래를 참고하기 바란다
http://blog.naver.com/echris7/140012453284
 
압축풀린 class들을 내 jar파일에 묶는 방법
 
1. 필요한 외부 jar파일의 압축을 푼다
    1) 알집등 압축 프로그램에서 압축을 푼다
 
        

 

    2) 외부 클래스파일들을 jar파일이 만들어질 폴더에 집어 넣는다

        (아래 그림은 예시로 colt.jar파일 내부의 cern, edu 폴더를 옮겨놓은 것임)

        

2. 실행가능한 jar파일을 만들기 위해서 manifest.txt파일을 만든다

   1) 워드패드를 연다

   2) 그 안에 다음과 같이 써 넣는다.

      ① Class-Path를 잡아준다. 콜론뒤에는 클래스들의 폴더를 써준다

          Class-Path : [클래스 폴더 이름](예> Class-Path : cern edu)

      ② Main-Class를 잡아준다. 콜론 뒤에 메인클래스명을 써 넣는다.

          이때 메인클래스 이름에 .class를 붙이지 않는다

          Main-Class: [메인클래스명] (예> Main-Class: SimpleWindow)

 

 

   3) 반드시 엔터를 한번 쳐 다음 행으로 넘어간 후 클래스 파일이 모여있는 폴더에 저장한다

 

3. 압축이 풀린 외부 클래스파일까지 포함해 jar파일을 생성한다. 다음과 같은 명령문을

    사용한다.

     jar [cmf] [manifest.txt] [jar파일이름.jar] [외부 클래스파일의 최상위 디렉토리] [기타 파일 ]

     (예> jar cmf manifest.txt JarExam.jar cern edu *.class)

   

 

4. 확인

    1) 명령문을 다 입력 했으면 아래와 같이 JarExam.jar파일이 생성된 것을 볼 수 있다 

        


    2) 실제로 실행해보면 아래와 같은 창이 뜨고, 외부 클래스 파일들이 정상작동 하는것을

        알 수 있다.         


Posted by wychoi
,