2012-01-15 1 views
11

이미지를 표시해야하는 간단한 프로그램이 있습니다. Eclipse에서 코드를 실행하는 방법을 알고 있고 JAR 파일에서 실행하는 방법을 알고 있지만 두 경우 모두에서 작동하는 솔루션을 원합니다.JAR 또는 파일 시스템에서 ImageIcon로드 중

이클립스 프로젝트와 같은 것입니다 :

- Project (java) 
    - src 
    - controller 
     - Main.java 
    - ui 
     - Display.java 
    - images 
    - image.jpg 

이클립스 내에서 작동하는 코드 :

ImageIcon image = new ImageIcon("images/image.jpg); 

의 JAR (하나의 JAR 파일의 모든)에 대한 작동하는 하나

java.net.URL imgURL = getClass().getResource("/images/image.jpg"); 
ImageIcon image = new ImageIcon(imgURL); 

두 상황에서 모두 작동하는 단일 코드를 얻으려면 무엇을 변경해야합니까? ons?

+0

두 경우 모두 두 번째 시도를 시도해 보셨습니까? 그저 당신을 위해 당신 자신의 질문에 대답 할 수도 있습니다. (그리고 여기서 당신이 대답을 기다릴 필요가 없습니다.) –

+2

<탭하고 탭하고 누릅니다 ...>여보세요? 이 마이크가 켜져 있습니까? –

+0

@Hovercraft 뱀장어의 전체. 예, 분명히 두 경우 모두 두 코드 스 니펫을 시도했습니다. – Martijn

답변

9

src 폴더 안에 images 폴더를 넣고 이클립스는 귀하의 항아리에 그들이 인 것처럼, 클래스 패스에서이를 사용할 수 할 대상 폴더 (일반적으로 bin 또는 classes)로 이미지를 복사합니다 출시 된 버전의 앱.

getResource() 항아리에는 보이지 않습니다. 클래스 로더의 클래스 패스를 조사합니다. 이미지가 항아리에 있는지 여부는 중요하지 않습니다. 그것은 classpath에 있어야합니다. 그리고 분명히 이클립스 (bin 또는 classes, 일반적으로)의 대상 폴더는 Eclipse에서 실행될 때 앱의 런타임 클래스 경로에 있습니다.

+0

정말 고마워요! 'src' 안에'images' 폴더를 옮기는 것이 실제로 해결책이었습니다. 내 두 번째 코드 스 니펫은 Eclipse와 Jar에서 실행될 때 모두 변경되지 않았습니다. – Martijn