문제

같은 폴더의 다른 파일에 사용하려는 이미지가있는 폴더 등이있는 폴더가 있습니다. 그래서 나는 etc image.png 등이 있습니다. etc exames.java. "etc/image.png"를 이미지 경로로 사용하려고 시도했지만 작동하지 않았습니다. 이것에 대해 어떻게 가야합니까?

또한 파일이 다른 패키지에 있다고 가정 해 봅시다. 어떻게해야합니까?

내 Main .java 클래스는 레코드를 위해 Main이라는 패키지에 있습니다.

편집하다:

나는 이것을 사용했다 :

classload.getSystemClassLoader (). getResource ( "etc image.png");

도움이 되었습니까?

해결책

당신이 사용할 수있는 Class.getResource(), 클래스 로더를 사용하여 리소스에 대한 URL을 얻습니다. 예를 들어:

import java.net.URL;
import javax.swing.ImageIcon;

public class Example {

    public ImageIcon getImage() {
        URL url = Example.class.getResource( "image.png" );
        if( url != null ) {
            return new ImageIcon( url );
        }
        return null; // TODO: Better error handling
    }

}

중요한 부분은입니다 Example.class.getResource( "image.png" ) - 이미지 경로는 명명 된 클래스에 대해 지정됩니다. 이 경우 클래스 파일과 동일한 디렉토리에 있습니다. 다른 클래스 에서이 줄을 사용할 수도 있으며 Example.class 손대지 않은.

다른 팁

먼저 첫 번째 것들.

등이 패키지입니까? 다시 말해서 예제 파일의 맨 위에

패키지 등;

???

일반적으로 패키지 이름은 소문자이므로 제가 묻는 이유입니다.

둘째, 상대 경로를 사용하여 리소스에 액세스 할 수 있지만 항상 절대 경로를 사용하는 것이 좋습니다.

그래서

url url = example.class.getResource ( "/etc/image.png");

등이 패키지 인 경우

url url = example.class.getResource ( "/image.png");

그렇지 않은 경우.

그것이 작동하기 위해서는 등급에있는 디렉토리가 있어야합니다. 항아리 안에 있다면 기억 나지 않습니다. 클래스 경로로 작동하거나 클래스 경로에 추가 등을 추가하고 클래스 경로없이 이미지를 참조하거나 서브 디렉토리에 넣습니다. 해당 하위 디렉토리를 클래스 경로에 넣습니다.

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