2016-06-26 2 views
0

이미지로드를 시도했지만 이클립스에서 잘 작동합니다. 그러나 컴파일 할 때 입력 == null로 인해 충돌합니다. 아이콘을 얻는 방법은 여기에 있습니다 : 나는 나 같은 오류와 함께 다른 스레드를 읽고입력 == null 이미지를로드 할 때

input == null! 
Image folder stream:[email protected]656e 
Image folder + image stream: null 
input == null! 
Image folder stream:[email protected]e634 
Image folder + image stream: null 

,하지만 난 그것을 해결하지 못하고 :

public ImageIcon getIcon(String iconName){ 
    InputStream imageStream = this.getClass().getClassLoader().getResourceAsStream("images"+File.separator+iconName); 
    InputStream t = this.getClass().getClassLoader().getResourceAsStream("images"); 

    Image image = null; 
    try 
    { 
     image = ImageIO.read(imageStream); 
     return new ImageIcon(image); 
    } 
    catch(IOException e){ 
     return null; 
    } 
    catch(IllegalArgumentException e){ 
     System.out.println(e.getMessage()); 
     System.out.println("Image folder stream: Im"+t); 
     System.out.println("Image folder + image stream: "+imageStream); 
     return null; 
    } 
} 

콘솔 출력은 . 어떤 도움을 주시면 감사하겠습니다.

+0

상대 경로 대신 이미지의 전체 경로를 사용해보십시오. – sreisman

+2

첫 번째로, getResourceAsStream()은'/'- 세퍼레이트 된 경로를 기대합니다. 따라서 File.separator는 사용하지 말고'/'를 사용해야합니다. 둘째, iconName의 값은 무엇입니까? 프로젝트의 구조는 무엇입니까? 프로그램을 빌드하고 실행하는 방법은 무엇입니까? 구조에있는 아이콘의 위치는 어디입니까? –

+0

와우. File.separator를/fixed로 대체합니다. 도움을 주셔서 감사합니다, 당신이 원할 경우 답변으로 게시하십시오. –

답변

2

getResource[AsStream]()/ - 분리 된 경로를 예상합니다. 항상. 플랫폼이 무엇이든간에. File.separator을 사용하지 마십시오. /을 사용하십시오.

1

거의 확실하게 클래스 경로에 문제가 있습니다.

imageStream 변수가 null이므로 클래스 로더가 파일을 찾지 못하고로드하는 중입니다. 거기서부터,이 방법은 실패 할 운명이다.

IDE에서 실행 중일 때 Eclipse는 유용하게 경로를 설정하므로 잘 동작합니다. 명령 행에서 실행할 때 클래스 경로가 Eclipse와 일치하는지 확인해야합니다.

다양한 이미지가 포함 된 'images'폴더가 있지만 컴파일 된 JAR 또는 실행 명령에서 클래스 경로의 요소로 사용할 수 있다고 가정합니다.

+0

예, 이미지 폴더가 있습니다.이 파일은 단지에 잘 컴파일되었습니다. 그러나 JB Nizet의 답변은 문제를 해결해주었습니다. 답변을 작성해 주셔서 감사합니다. –

관련 문제