Java Swing : Jar 내에서 이미지 표시
-
09-06-2019 - |
문제
eclipse에서 Java 앱을 실행하면 ImageIcon이 정상적으로 표시됩니다.
하지만 항아리를 만든 후에는 이미지 경로가 분명히 망가집니다.
런타임에 항아리에서 이미지를 추출하여 열 수있는 방법이 있습니까?아니면 더 나은 방법이 있습니까?
가능한 한 단일 jar 파일을 배포하고 싶습니다.
해결책
코드가로드 된 동일한 jar 내의 이미지 파일에서 ImageIcon
를 생성하려면 :
라코 디스
Class.getResource
는 리소스 (또는 null
!)의 URL을 반환합니다.ImageIcon
에는 URL에서로드하는 생성자가 있습니다.
'classpath'가 아닌 jar에있는 리소스의 URL을 구성하려면 java.net.JarURLConnection
에 대한 문서를 참조하세요.
다른 팁
다음과 같은 방법을 시도해 볼 수 있습니다. 라코 디스
JAR 파일에 다음과 같은 디렉토리 구조가있을 수 있습니다. <인용구>
MyJAR.jar
-com (여기에 클래스 파일)
-이미지
---- image.jpg
콘텐츠 창 배경 이미지를로드하고 설정하는 작업입니다.
jar (또는 빌드 경로)에는 다음이 포함됩니다. 라코 디스
자바 포함 : 라코 디스
jar 및 unjared (기술 용어) 실행 모두에서 테스트 및 작업했습니다.
BTW getClass().getClassLoader().getResourceAsStream("/img/bg.png")
-제가 먼저 시도한-null InputStream을 반환했습니다.
netbeans 8.1에서 제가 한 일은 프로젝트 파일의 src 폴더 안에 Resources 라는 아이콘과 기타 이미지 폴더를 포함하는 것입니다.따라서 Jar 파일을 빌드 할 때마다 폴더가 거기에 포함됩니다. 파일 트리는 다음과 같아야합니다. <인용구>
- src (소스 패키지의 Java 파일은 여기에 있음)
<인용구>
-
** 프로젝트에서 지정한 패키지 ** <인용구>
- file.java
-
리소스 <인용구>
- image.jpg
코드는 다음과 같아야합니다. 라코 디스
- image.jpg
-
런타임 동안 Jar 파일에서 이미지를로드하는 것은 IDE에서 실행할 때 이미지를로드하는 것과 동일합니다 (예 : netbeans). 차이점은 JAR 파일에서 이미지를로드 할 때 경로가 정확하고 대소 문자를 구분 해야한다는 것입니다.(매우 중요). 저에게 효과적입니다 라코 디스
"/ Pictures / firstgame / habitat1.jpg"의 p가 소문자이면 작동하지 않습니다.공백, 대소 문자 및 철자 확인