2011-02-02 2 views
2

나는 외부 이미지를 표시해야하는 작은 프로젝트에서 작업 해왔다. Eclipse를 사용하는 방법에 대해 잘 알고있는 사람이 아닙니다. 완성 된 프로젝트를 내보내려고 시도한 것은 이번이 처음입니다. 다른 사람들과 공유 할 수 있습니다. 지금은 내 하드 드라이브에 특정 폴더를 지정하고 코드의 이미지 경로를 지정하면 내 이미지를 표시 할 수있는 유일한 방법 인 것 같습니다. 이미지를 내 JAR의 일부로 또는 동일한 패키지의 일부로 내보내는 방법을 찾고 있습니다. 따라서이 프로그램을 다른 사용자에게 보내려면 이미지의 개별 보관 폴더를 보낼 필요가 없습니다. . 또한 외부 폴더없이 작업 할 수 있도록 해당 코드 내의 이미지를 참조하도록 코드를 작성해야 할 필요가 있음을 알고 싶습니다. Eclipse 내에서 일종의 패키지 시스템에 대해 읽었지 만 지금까지 사용 방법을 알아내는 데 운이 없었습니다. 몇 가지 묘사를 사용할 수 있습니다!Eclipse (Java)에서 JAR을 사용하여 이미지 내보내기

저에게 두 센트를 기꺼이 보내 주시는 분께 미리 감사드립니다.

답변

2

항아리 내에있는 경우 클래스 경로 리소스로로드해야 할 수도 있습니다. 참조 : 모두 getClass() getClassLoader를() 같이 getResourceAsStream은 (...)

+0

좋아, 그럼 첫 번째 문제는 분명히 Eclipse를 사용하여 JAR 파일로 가져 오는 방법을 알 수 없다는 것입니다. 그걸 내게 설명 할 수 있니? – Chiubaka

+0

클래스 경로에 배치하십시오. 그래서, 이클립스 소스 폴더를 찾아서 그것을 넣으십시오. 또는 그들이있는 폴더에 상관없이 - 그냥 마우스 오른쪽 버튼을 클릭하고 경로를 빌드하기 위해 추가 클릭하십시오. – Steven

1

사용의 getResource() 이미지를로드 :..

ImageIcon qmarkIcon = new ImageIcon(getClass().getResource("images/mark.gif")); 
6

을 그냥 이미지가 다음을 선택하여, 이클립스 프로젝트에 폴더를 드래그 " 이클립스 버전에 따라 "새 폴더 복사"또는 "파일 및 폴더 복사"를 선택한 다음 이미지 폴더 (Eclipse에서)를 마우스 오른쪽 단추로 클릭하고 "소스 폴더로 사용"경로를 빌드하십시오.

+0

감사합니다 @ 대니,이 답변은 내가하려고했던 것을 해결합니다. 그러나 이렇게하면 맨 아래 수준의 폴더가 제거됩니다. 예를 들어, 모든 이미지를 저장하는'img'라는 폴더가 있었고,'소스 폴더로 사용 '했을 때,'img' 디렉토리의 모든 내용이 제'jar 파일의 기본/루트 레벨에 나타났습니다 '파일. 이 문제를 해결하기 위해'lnk'라는 이름의 폴더를 만든 다음,'lnk' 폴더 내에서'img' 폴더에 대한 심볼릭 링크를 만들었습니다 (Windows에서는'JUNCTION'으로 할 수 있습니다). 이제,'lnk'을 "source folder"로 추가하면, 이미지는'jar'의'img' 폴더에 있습니다. –

10

내가이 답변과 함께 유용하게 사용했을 것으로 보이는 부분은 다음과 같습니다. 이미지/파일을 소스 코드로 같은 Eclipse 폴더 (또는 하위 폴더)에 넣었는지 확인하십시오. 이클립스를 사용하여 "images_ignored"라는 폴더를 만들었습니다. 빌드 경로에 추가했지만 여전히 (실행 가능한 JAR을 만들 때) 내 JAR 파일에 포함되는 것을 거부했습니다.

Eclipse screenshot showing were to put images

+2

나는 이것이 대회를 조금 어기는 것 같아. '.java' 소스 파일 (및 다른 실제 소스 코드 파일)만이'src' 디렉토리에 있으면 도움이됩니다. @ danny의 대답은 원하는 폴더를 마우스 오른쪽 버튼으로 클릭하고 "소스 폴더로 사용"경로를 작성하는 데 가장 충분하다고 생각합니다. 이렇게하면 리소스 (이미지, 사운드, 소스, 설정 등)를 쉽게 분리 할 수 ​​있습니다. –

+0

@ MichaelPlautz의 의견에 특별히 서명했습니다. .java 파일이 작동하기 때문에 이미지를 추가하지 마십시오. – wheresmycookie

-1

당신은 당신이 jar 파일에 수출 할 때 그냥 에 기억 img/myImage.gif 같은 경로로 참조에게 이미지를하지 않는, 어느 일식의 이미지를 검색 할 수 있습니다 경로를 구축하는 폴더를 추가하는 경우 하지만 myImage.gif!

0

JDK 1.7 또는 JDK 1.8을 사용하는 경우 NIO.2 API를 사용할 수 있습니다. 당신이 java.nio.file.FileSystem을 반환하는 방법으로이 코드를 입력하면

for (FileSystemProvider provider : FileSystemProvider.installedProviders()) { 
    if ("jar".equals(provider.getScheme())) 
     return provider.newFileSystem((new File(Start.class 
       .getProtectionDomain().getCodeSource().getLocation().toURI())) 
       .toPath(), new HashMap<String, Object>()); 
} 

, 당신은 JAR 파일의 파일 시스템을 얻을 수있는 방법을 호출 할 수 있습니다.

JAR 파일 내의 파일에 액세스 할 경로를 얻으려면 다음 방법을 사용할 수 있습니다. 그러면 다음과 같은 방법으로 파일을 읽을 수 있습니다.

fileSystem.getPath("/images/image.gif") 

당신이 시도/캐치 IOException이와 방법에 전화를 포위하고 파일 시스템이 다음과 같은 객체에 할당해야합니다, 이클립스에서 이것을 실행하기를 원하는 경우 .

new File(Start.class.getProtectionDomain().getCodeSource().getLocation().toURI()) 
     .toPath().toString(); 

이렇게하면 프로그램을 JAR 파일로 압축했는지 여부에 관계없이 프로그램을 실행할 수 있습니다.


매우 강력한 API이므로 NIO.2를 사용하는 것이 좋습니다.

관련 문제