2009-11-02 5 views
3

에서 작동하지 않습니다 나는 다음과 같은 코드가 있습니다 내 응용 프로그램이 .jar 파일로 내 보낸 후ClassLoader.getResource()는 .jar 파일

private final ImageIcon placeHolder = new ImageIcon(this.getClass().getClassLoader().getResource("Cards\\trans.png")); 

는하지만이 작동하지 않습니다.

+3

에서는 작동하지 않습니다? 예외가 있니? 렌더링되지 않습니까? BalusC가 연결된 질문에 jjnguy가 게시 한 –

+0

http://stackoverflow.com/questions/31127/java-swing-displaying-images-from-within-a-jar –

+1

Classmate? http://stackoverflow.com/questions/1662686/images-will-not-work-in-a-jar-file – BalusC

답변

10

귀하의 "\의 t는"탭으로 컴파일되고있다 - 당신은 그것을 탈출해야합니다

private final ImageIcon placeHolder = new ImageIcon(
    this.getClass().getClassLoader().getResource("Cards\\trans.png")); 

참고 이중 백 슬래시. 물론 잘못된 것만은 아닙니다.하지만 시작일뿐입니다 ...

사실, 대신 슬래시로 지정합니다. 어쨌든 Windows 및 Unix 기반 OS 모두에서 작동하며 jar 파일에서도 작동합니다. 필자가 이중 백 슬래시를 강조한 유일한 이유는 일반적으로 이스케이프 문자열의 위치를 ​​높이는 것이 었습니다. 이 시도 :

private final ImageIcon placeHolder = new ImageIcon(
    this.getClass().getClassLoader().getResource("Cards/trans.png")); 

다음으로,이 경우를 포함 파일에 대한 정확한 올바른 이름을 가지고 있는지 확인하십시오. Windows 파일 시스템은 일반적으로 대소 문자를 구분하지 않지만 jar 파일은 대소 문자를 구분합니다. 실제로 "카드"또는 "trans.png"대신 "TRANS.png"대신 "카드"인 경우 작동하지 않습니다.

+0

클래스가 아닌 ClassLoader에서 getResource를 호출하는 이유가 있습니까? – JRL

+0

@JRL : 클래스 로더에서 호출하는 경우 클래스가 아닌 jar 파일의 루트와 관련이 있습니다. 당신은 Class.getResource에 대한 호출에서 선행 슬래시를 사용하여 동일한 효과를 얻을 수 있습니다. –

2

사용이 jar 파일에서 이미지를 가져 오기위한

ClassLoader.getSystemResource("images/Springz3.png"));

+0

오. 여자 이름. 말. 이 답변을 얼마나 오래 찾고 있었는지 알 수 없습니다. 모두 getResource (..)를 사용한다고 말하고 있지만 jar 파일의 이미지/사운드에는 작동하지 않습니다! getSystemResource (..) !!!!!를 사용해야합니다. 이 답변을 주셔서 감사합니다! – BigSauce

+0

아니 언급하시기 바랍니다. – Basil