IT_Programming/Java

jar 다룰 때 유의사항

JJun ™ 2007. 5. 19. 10:20

패키지에서 이미지를 로딩하면 분명 잘 로딩될 것이다.

하지만 jar로 만드는 순간 이미지를 못불러온다..

이럴땐...

 

URL url = getClass().getClassLoader().getResource("경로명");

ImageIcon icon = new ImageIcon(url);

이렇게 해야 한다..

 

여기서 중요한것은 경로명에

패키지내에서의 절대경로라는것이다.

 

c:\aaa\ 라는 폴더에 아래와 같은 패키지를 구성했다면..

java\util\

java\main\

java\temp\image

 

url의 경로는 "java/temp/image/이미지명.gif" <<--이렇게 해야 한다.

 

그리고

 

jar파일에서 다른 폴더(a라는 폴더)에 있는 클래스파일을 로딩한다고 해보자.

어떤 수를 써도 안될것이다...이럴땐 jar파일과 a폴더가 같은 폴더내에 위치해 있을 경우

mf파일에 Class-Path: . 폴더명/  을 추가하면 된다.

그리고 로딩할때는 그냥 클래스명만 사용하면 된다. 이유는 클래스패스가 해당폴더로 잡혀있기 때문에 기본으로 그 폴더에서 클래스를 찾기 때문이다..

 

마지막으로

위에서 언급한 클래스패스에 지정된 폴더가 c:\bb 라고 가정해보자

그럼 로딩할 클래스가 모두 그곳에만 위치해야한다..

만약 bb폴더 하위로 cc라는 폴더를 만들어서 그곳에 클래스를 넣어둔다면

로딩이 될까? 물론 클래스 경로를 cc/클래스명 으로 하고 말이다.

해보면 클래스를 찾을수 없다고 나온다.

이럴땐 해당 클래스를 패키지를 선언 해야 한다.

어떻게??

 

packge cc;

동적바인딩 한다면

 

Class.forName(cc.클래스명) 

이렇게 하면 된다