2013-07-27 1 views
0

Java에서 게임을하고 Eclipse에서 예상대로 실행되지만 실행 가능한 jar 파일로 내보낼 때 해당 호출을 시도 할 때 널 포인터 예외가 발생합니다. File 클래스의 listFiles() 메서드 여기Java 프로그램이 Eclipse에서 실행되지만 jar 파일의 오류가 발생합니다.

File Buffer = new File("Resources/SpriteSheets"); 

// Count how many sprite sheets there are 
m_intTotalSheetCount = Buffer.listFiles().length; 

오류 발생 : 여기에 코드입니다

C:\Users\Joe>java -jar C:\Users\Joe\Documents\GameDevelopment\Game1.jar 
Exception in thread "Thread-2" java.lang.NullPointerException 
     at Graphics.CSpriteSheetLoader.<init>(CSpriteSheetLoader.java:25) 
     at Graphics.CScreen.<init>(CScreen.java:36) 
     at game.CGame.Initialize(CGame.java:107) 
     at game.CGame.run(CGame.java:157) 
     at java.lang.Thread.run(Thread.java:722) 

내가 jar 파일에 보니 거기에도 자원 폴더가 있습니다, 그래서 나는 또한 파일을 시도했다 ("SpriteSheets") ,하지만 같은 오류가 발생했습니다.

+0

를 확인해야합니다 : \ 사용자 \ 조 \ 자료 \ SpriteSheets' – Ingo

+1

난 당신이 단지 내에서 파일을로드하려고하는 것 같아요 파일 : http://stackoverflow.com/questions/2815404/load-properties-file-in-jar – HectorLector

+0

내 Joe 폴더에 Resources라는 폴더가 없습니다. C : \ Users \ Joe \ Documents \ GameDevelopment \ Game1.jar를 의미합니까? 아니면 이클립스 프로젝트의 디렉토리를 의미합니까? –

답변

0

jar 파일에 포함되지 않은 파일에 액세스하려고합니다. jar 파일과 함께 resources 폴더를 포함하는 경우. 다시 말하면 작업 할 동일한 디렉토리에 배치하십시오.

Ex. 단지 바탕 화면에있는 경우 자원 파일은 바탕 화면에 있어야합니다

+0

아니요, jar 파일 안의 파일에 액세스하려고합니다. 거기에 다른 구문이 있습니까? 파일이 존재 함을 확인했습니다 : http://i.imgur.com/UCKPmSj.png –

0
  1. JAR 파일

    this.getClass(). getClassLoader를() 안에 "Resources/SpriteSheets" 디렉토리.의 getResource()의 경우

    ClassLoader.getSystemResource

  2. 만약 jar 파일

    System.getPr 외부 "Resources/SpriteSheets" 디렉토리 operty ("user.dir")

루트 디렉토리 (실행 가능한 jar 디렉토리)를 얻으려면 원하는 것을 수행하십시오.

PS : 당신이 우리에게 C '의 목록을 부여 Buffer.listFiles() == null이

+0

고마워, 어제는 File 클래스의 인스턴스를 항아리 안에있는 리소스로 만들 수 없다는 것을 깨달았습니다. 항아리 밖에 파일을 만들고 그 트릭을 했어. –

관련 문제