2017-03-10 1 views
0

Eclipse에서 만든 팩맨 게임을 .jar 패키지로 내보내려고합니다. 문제는 .jar을 내보낼 때 모든 것이 잘 실행되지만 사용하는 리소스는 제대로로드되지 않는다는 것입니다. 빌드 경로에있는 별도의 /res folder에 있습니다. 나는 다음과 같은 방법으로 그들에 액세스 : 내가 뭘 잘못Java getResource가 .jar 파일에서 작동하지 않습니다.

ClassLoader classLoader = getClass().getClassLoader(); 
    try{ 
     image = ImageIO.read(new File(classLoader.getResource("images/PM0.gif").getFile())); 
    } 
    catch (IOException e1) { 
     e1.printStackTrace(); 

    } 

File file = new File(classLoader.getResource("levels/"+fileName).getFile());

? here은 내가 얻은 오류의 예입니다 (이클립스에서 내 보낸 .jar에서만 정상적으로 실행됩니다)

+1

가능한 복제 [JAR 파일의 리소스에 액세스하는 방법?] (http://stackoverflow.com/questions/2393194/how-to-access-resources-in- jar-file) –

+0

항아리에있는 객체는 파일이 아니므로 액세스 할 때'File'을 사용할 수 없습니다. –

답변

0

자원으로 작업 할 때는 항상 이상한 일을 시도하지 않는 한 스트림이 아닌 파일로 유지해야합니다.

는 다음과 같은 시도 :

ImageIO.read(classLoader.getResourceAsStream("images/PM0.gif")) 
+0

작동하는 것처럼 보였지만 사용중인 스캐너에서 문제가 발생했습니다. 'Scanner s = new Scanner (this.getClass(). getClassLoader(). getResourceAsStream ("levels /"+ fileName)); '이 패키지가 제대로 작동하지 않는 것 같습니다. – user19955

+0

@ user19955 스캐너를 사용해서는 안되는 파일을 읽으려는 경우 대신 다음 해결책을 시도하십시오. http://stackoverflow.com/questions/29611661/how-to-make-scanner-strings-into- a-stream-in-java –

1

항아리 안에 배치 된 리소스를 검색하려면 getResourceAsStream()을 사용해야합니다.

런타임 환경이 실제 파일을 사용하여 "압축 해제 된"JAR (또는 더 잘 넣어서)을 사용하여 실행되기 때문에 eclipse에서 작동합니다.

관련 문제