티스토리 뷰

Java

CLASSPATH 설정하기-3

꿈이 있는 자유 2009. 1. 12. 20:32
이번엔 jar 파일로 클래스 파일을 압축한 다음 배포해 보자. 보통 자바 클래스 파일들을 압축해서 배포할 때에는 jar 파일로 배포한다. Java Web 에서는 war 파일로, 또는 ear 파일로 압축해서 배포한다.
본래 SUN 에서 배포한 클래스 파일들을 레퍼런스하면 컴파일러는 기본 위치 즉, %JAVA_HOME%\lib\tools.jar 를 참조한다. 하지만, SUN 이 제작하지 않았거나, 제작했어도 JDK 설치시점에 들어있지 않았거나, 개발자가 별도로 제작한 클래스 파일들은 jar 형식으로 제작돼 배포되는데, 이번 강의에서는 jar 파일의 배포에 대해 살펴보도록 한다.

먼저, 두개의 클래스를 작성한다. 하나는 아래의 그림처럼 abc.sales.data.A 클래스이고,

두번째는, abc.it.data.B 클래스이다.

필자는 이 2개의 파일들의 클래스 생성기준을 C:\Temp 하위로 하겠다. 현재 커서가 있는 위치인 C:\JavaRoom 에서 2개의 소스파일이 저장돼 있는 C:\Temp 하에 컴파일하자. 그럼. -d 옵션에 의해 설정된 디렉토리가 package 생성시점이 되는 것이다. 즉, abc 디렉토리는 C:\Temp\abc에 생성될 것이다.

예상했던 대로 C:\Temp\abc 하에 두개의 디렉토리가 생성됐다. 하나는 A 클래스가 있는 sales 디렉토리, 또 하나는 B 클래스가 있는 it 디렉토리.

자! 이 두개의 클래스 파일을 압축해보자. 
   jar -cvf test.jar abc/
즉, abc 하위의 모든 디렉토리를 test.jar 파일로 압축하라는 말씀.

방금 생성한 test.jar 파일을 컴파일러가 기본적으로 인식하는 위치인 %JAVA_HOME%\lib 가 아니라, 아래의 그림과 같이 외부에서 작성된 jar 파일들은 %JAVA_HOME%\jre\lib\ext 디렉토리에 집어넣는다.

자! 이젠 불러오는 것만 남았다. import 로 레퍼런스할 클래스 경로를 정확히 지정하고, 컴파일 그리고 실행까지 성공이다. 그런데...

에디터에서는 잘 실행되지만, 아래의 그림처럼 도스모드에서는 컴파일은 되지만, 실행되지 않는다. A클래스와 B 클래스를 찾을 수 없다고 나온다. 이게 웬일인가?

결국, %JAVA_HOME%\jre\lib\ext 디렉토리에만 test.jar 파일을 갖다 놓는 것이 아니라, 한곳 더 복사해 넣어야 한다. %JAVA_HOME% 에 가보면 jre6 디렉토리가 있다. 필자의 경로는 C:\Program Files\Java\jre6\lib\ext 에도 복사해서 붙여 넣어야 한다. 왜냐하면, 컴파일할때는 %JAVA_HOME%\jre\lib\ext\test.jar 를 참조하고, 실행할 때는 C:\Program Files\Java\jre6\lib\ext\test.jar 를 참조하기 때문이다.

두 군데에 test.jar 파일을 넣었더니 에디터에서나 도스모드에서나 잘 실행됐다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함