2017-12-15 6 views
-1

이 말은 새 것이므로 어리석은 질문 인 경우 유감입니다. 하지만 네 도움이 필요해. 나는 ecplise에 다음 디렉토리를 가지고있다 : 물론이 모든 파일들을 담고있는 디렉토리가있는 Directory Hierarchy.getResource에서 null 포인터 예외가 발생했습니다.

scanObj = new Scanner(new File(this.getClass().getResource("resources/data.txt").toExternalForm())); 

을하지만 그건 왜 내가 널 포인터 예외를 얻고있다 :
나는 같은 "data.txt로"라는 파일을 액세스 할 수 class.getResource를 얻을 사용하려고? 많은 감사! 어떤 도움이 많이 콘솔에

this.getClass().getResource("resources/data.txt") 

+0

이 resources''제거하십시오 (이것은 당신에게 InputStream에게 그물 것) ClassLoader.getSystemClassLoader().getResourceAsStream("data.txt") 사용합니다. –

+0

그럼 txt 파일을 어디에 두어야합니까? –

+0

아, 단지''resources/data.txt '''''/data.txt'''로 변경하는 것입니다. –

답변

0

먼저 인쇄 값을 감상 할 수있다. 그것이 null를 인쇄하면 (자), 그것이 문제의 원인입니다. 참조하는 파일이 클래스 경로에없는 경우 대부분 발생합니다. eclipse에서 클래스 경로에 파일을 추가하는 방법에 관한 게시물을 검색하십시오.

+0

내가 그랬을 때 반환 한 것은 file :/C입니다. : /Users/James/Desktop/Game/Maths/bin/resources/data.txt –

+0

파일이 ur 클래스 경로에 있지 않으므로 사용중인 메서드가 클래스 경로에서 파일을 가져 오는 데 사용되므로 생각하지 마십시오. getResource가 작동 할 것입니다. 가장 좋은 방법은 파일 위치를 입력 매개 변수로 가져 와서 해당 매개 변수를 파일 생성자에 제공하는 것입니다.이 방법으로 코드를 구성하고 어느 위치에서든 파일을 수락 할 수 있습니다. – Rohit

+0

죄송합니다. 이 파일을 exe jar 파일로 변환하려고 시도하기 때문에 클래스 경로가 필요합니다. –

0

조회는 응용 프로그램의 작업 폴더를 기준으로하기 때문에. 해당 폴더가 무엇인지 확인하십시오 (Eclipse에서 클래스의 실행 구성에 있어야 함). 그리고 해당 위치를 기준으로 경로를 구성하십시오.

는 다른 방법으로,

관련 문제