2013-04-08 3 views
0

내 프로젝트는 일식에서는 잘 실행되지만 실행 가능한 jar로 내보내기하면 여러 가지 문제가 발생합니다. .jar는 실행 가능하지 않으며 doubleclicking은 아무 것도 수행하지 않습니다. cmd의 .jar에서 java -jar을 실행하면 .jar에서 실행될 때 스캐너가 Null을 많이 띄게됩니다. getResource는 null을 반환하고 이유를 알지 못합니다.이클립스를 실행 가능한 jar 파일로 내보내기 NullPointerException

Scanner in = null; 
    try { 
     in = new Scanner(new FileReader(getClass().getResource(filename) 
       .getFile())); 
     readLine(in); 
     in.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 

스캐너를 실행하는 클래스는 game/filename = "../001.txt"

을입니다. 001.txt 파일은 levels/이므로 ../001.txt이 작동해야합니다.

매니페스트가 .JAR이 매우 성가신 문제와 해결책을 제공하지 시간 동안 인터넷 검색을하다

Manifest-Version: 1.0 
Class-Path: . 
Main-Class: game.Game 

내부 모습입니다, 내가 전에 비슷한 문제를 가지고 있지만 실제로로드 상대 경로로했다 NPE가 아닙니다.

답변

1

getResource()는 파일 시스템 경로가 아닌 클래스 경로에서 자원을로드합니다. 따라서 001.txt가 패키지 수준 인 경우 다음을 입력해야합니다.

filename = "/levels/001.txt";

"/"는 절대 경로입니다. "../001.txt"를 넣으면 상대 클래스 경로이고 /levels/game/../001.txt로 변환됩니다.

+0

감사합니다! – arynaq

관련 문제