2011-02-09 2 views
0

gui 앱을 작성하고 이미지 파일 (gif)을 아이콘으로 사용합니다. IDE에서 앱을 실행하면 아이콘이 나타납니다.Java with waven : jar 파일에서 소스 가져 오기

를 SRC/메인/자바/COM/내/응용 프로그램 :

코드 : - 나는 항아리에서 실행할 때 그들이 (자원에 널 포인터 예외가) 실패

패키지 구조는 다음과 같습니다 자료 : SRC/메인/자원/COM 나는이 작은 예를 썼다

/내/응용 프로그램 :

 URL url ; 

     url = GuiUtils.class.getResource("/com/my/app/gui/fading_lines_blue_64x64.gif"); 
     System.out.println("url: " + url); 

     url = GuiUtils.class.getResource("/resources/com/my/app/gui/fading_lines_blue_64x64.gif"); 
     System.out.println("url: " + url); 

는 IDE에서 실행 :

url: file:/C:/Repositories/V8/trunk/MyApp/build/com/my/app/gui/fading_lines_blue_64x64.gif 
url: null 

언제 항아리에서 실행 :

url:null 
url:jar:file:/C:/DevEnv/Projects/Viewer/testPicLoad.jar!/resources/com/cmy/app/gui/fading_lines_blue_64x64.gif 

내가 이런 식으로 해결하지만, 그것을 할 올바른 방법으로 분명히 아니다 :

public static URL getResourceURL(String path) {  
     URL url = GuiUtils.class.getResource(path); 
     if (url == null) { 
      url = GuiUtils.class.getResource("/resources"+path); 
     } 
     return url; 
    } 

제안?

+0

'당신이 여기서 한 일은 언제 항아리에서 달렸습니까? –

답변

4

두 번째 옵션에서 경로가 잘못 들립니다. 기본적으로 maven은 컴파일 된 클래스와 함께 리소스를 대상/클래스에 넣어야합니다. Jaring은 그 모든 것을 받아 들여 "/ resources"를 추가하는 것이 왜 이상한가 보네요. testPicLoad.jar에서 gif를 찾아야합니다!/com/cmy ...

병을 만들 때 이상한 일을하고 있습니까?

+0

'/ resources "는 나에게 이상하게 들린다. :) @yossale 어떻게 할 수 있니? –

+0

@ Jigar 나는 항아리 (수출 ..)를 포장하기 위해 이클립스를 사용했다. - 이것은 문제인 것 같다. – Yossale

+1

@yossale : 예, 그게 문제라고 생각합니다 .Maven을 사용하여 jar 파일을 빌드하십시오. 그게 전부입니다. –

1

내가이 항아리를 포장하기 위해 이클립스를 사용했기 때문입니다. 이유는 모르겠지만 그런 식으로 포장했습니다. 커맨드 라인에서 maven을 사용할 때 모든 것이 훌륭하게 작동했습니다.

+1

답변이 있습니다 .Maven 프로젝트를 처리 할 때 이클립스를 사용하지 않는 것이 가장 좋습니다. 그것들을 압축하고 테스트 코드를 남기는 방법을 이해하지 못한다. – drekka

관련 문제