문제

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

          코드는 다음과 같아야합니다. 라코 디스

런타임 동안 Jar 파일에서 이미지를로드하는 것은 IDE에서 실행할 때 이미지를로드하는 것과 동일합니다 (예 : netbeans). 차이점은 JAR 파일에서 이미지를로드 할 때 경로가 정확하고 대소 문자를 구분 해야한다는 것입니다.(매우 중요). 저에게 효과적입니다 라코 디스

"/ Pictures / firstgame / habitat1.jpg"의 p가 소문자이면 작동하지 않습니다.공백, 대소 문자 및 철자 확인

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top