Eclipse는 JAR 패키지를 내보낸 후 이미지를로드 할 수 없습니까?
이 문제의 이유는 주로 프로젝트에서 정상적으로 실행되는 경로 문제 때문이지만 일단 항아리로 포장되면 정상적으로 표시 할 수 없습니다. 이 문제를 해결하는 방법을 요약하겠습니다.
1. 외부 리소스 파일을 사용하여 해결하십시오
JAR을 생성하기위한 프로젝트를 포장 한 후 새 폴더를 만들고 프로젝트에 사용 된 모든 이미지 파일을 배치 하고이 디렉토리에 JAR 파일을 생성했습니다. 코드가 이미지 파일을 올바르게 참조하는 한 : imageicon image = new Imageicon (SwingResourcemanager.getImage ( "icons/logo.gif"));
이러한 방식으로 이미지 파일과 클래스 파일은 패키지에 함께 배치되지 않습니다. 클래스 파일은 패키지에 있고 이미지 파일은 프로젝트 루트 디렉토리에 있습니다.
2. 내부 리소스 파일을 사용하여 해결하십시오
프로젝트 패키지에 사용 된 이미지 파일을 넣고 포장시 이미지 파일을 JAR 파일에 동시에 입력합니다. 이 방법은 특정 코드에서 다음 중 하나를 사용해야합니다.
ImageIcon image = new ImageIcon (this.class.getResource ( "icons/logo.gif"));
다음은이 방법에 대한 자세한 설명입니다.
그래픽 인터페이스에 대한 프로그램을 작성할 때 다양한 이미지 리소스를 사용해야합니다. 따라서 프로그램을 게시 할 때 이러한 이미지 리소스를 어떻게 게시합니까?
가장 간단한 방법은 이러한 이미지 리소스를 클래스 파일과 함께 실행 가능한 JAR 파일로 패키지하여 모든 내용을 포함하도록 JAR 파일 만 게시하면 사용자가 JAR 파일을 두 번 클릭하여 프로그램을 실행할 수 있도록하는 것입니다. JAR 파일로 사진을 포장하는 경우 프로그램을 작성할 때이 사진에 어떻게 액세스합니까?
이 사진의 길은 무엇입니까? getResource () 메소드를 사용 하여이 문제를 해결할 수 있습니다.
여기서 우리는 가장 일반적인 두 가지 상황을 분석합니다.
1. 모든 리소스를 Andy.jar에 포장하고 클래스는 패키지에 있습니다. 패키지 Andycpp; 모든 이미지 리소스는 이미지 폴더에 배치되며 이미지 폴더는 Andycpp 패키지에도 있습니다. 이런 식으로 최종 경로는 다음과 같습니다.
Andy.jar
| __ andycpp
| __ Guitest.class
| __ 이미지
| __ Snap1.jpg
이미지 폴더와 참조를 참조하는 클래스는 동일한 수준에 있으므로 상대 경로를 통해 액세스 할 수 있습니다.
java.net.url imgurl = guitest.class.getResource ( "images/snap1.jpg"); imageicon img1 = new ImageIcon (imgurl);
여기에주의를 기울여야 할 것은 사례 문제입니다! JAR 파일의 내부는 CASE에 민감하므로 이미지 자체를 Snap1.jpg라고하고 이미지/snap1.jpg에 경로를 작성하면 이미지를 찾을 수 없습니다. 또한 각 클래스 (객체가 아닌 참고)에는 getResource () 메소드가 있지만 우연히 사용할 수는 없습니다. 이미지 폴더와 동일한 수준 인 클래스의 getResource () 메소드 만 사용할 수 있습니다. 예를 들어, 위의 그림에서 가장 큰 클래스와 이미지는 같은 수준 이므로이 클래스의 getResource () 메소드를 사용해야합니다.
2. 다른 경우, 수업이 많고 패키지 구조가 매우 복잡하다면, 그림과 클래스를 같은 수준으로 올릴 가능성은 거의 없지만, 가장 바깥 쪽 레이어에 그림을 넣고 모든 클래스를 절대 경로를 통해 그림에 액세스하도록해야합니다.
Andy.jar
| __ andycpp
| __ Guitest.class
| __ 이미지
| __ Snap1.jpg
코드는 다음과 같습니다.
java.net.url imgurl = guitest.class.getResource ( "/images/snap1.jpg"); imageicon img1 = new ImageIcon (imgurl);
위의 코드와의 차이점을 보셨습니까? 차이는 매우 미묘합니다. "이미지"앞에 Backslash "/"를 추가하십시오. 이 백 슬래시는 루트 디렉토리를 나타내고, 반 슬래시는 상대 경로를 나타냅니다.
위의 기사는 Java 포장 이미지의 경로 문제에 대해 간략하게 이야기합니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.