2012-02-15 2 views
0

maven 프로젝트를 jar 파일로 빌드 한 후 FileNotFoundException이 발생합니다. 여기javen 빌드 후 Maven 리소스 파일

final File file = new File("maps/ParcelsCountyRDMFinal5.shp"); 

의 예외입니다 :

C:\Users\ilija\Desktop\MavenizedCP\cp-map\target>java -jar cp-map-0.0.1-SNAPSHOT 
-shaded.jar 

Exception in thread "main" java.io.FileNotFoundException: C:\Users\ilija\Desktop 
\MavenizedCP\cp-map\target\maps\ParcelsCountyRDMFinal5.shp (The system cannot fi 
nd the path specified) 

여기에 작업 디렉토리가 분명 디렉토리입니다 I 자원 파일이 프로젝트 나는이 내 파일을 얻을 사용하여 구축 된 후 루트 디렉토리에 있다는 것을 알고 나는 항아리를 달리고 싶다. 작업 디렉토리는 jar의 루트 여야합니다.

도와주세요. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

는 정확히 ParcelsCountyRDMFinal5.shp는 파일입니까? C : \ maps \ ParcelsCountyRDMFinal5.shp에 있습니까? 아니면 resources 디렉토리에있는 maven 프로젝트의 일부입니까? – eigil

+0

그것은 내 maven 프로젝트 자원 디렉토리의 일부입니다! – ilija

답변

0

그러면 파일이 클래스 경로에 있습니다. final File file = ClassLoader.getSystemResource ("maps/ParcelsCountyRDMFinal5.shp"). getFile();

+1

false 스레드 "main"의 예외 java.io.FileNotFoundException : C : \ Users \ ilija \ Desktop \ MavenizedCP \ cp- 맵 \ 대상 \ 파일 : \ C : \ Users \ ilija \ Desktop \ MavenizedCP \ cp-map \ targe t \ cp-map-0.0.1-SNAPSHOT.jar! \ maps \ ParcelsCountyRDMFinal5.shp (파일 이름, 디렉토리 이름 또는 볼륨 레이블 구문이 올바르지 않습니다.) 이것은 제안을 시도한 후 얻는 것입니다. 첫 번째 false는 내가 확인한 file.canRead() 함수 때문입니다. – ilija

0

이것은 jar 파일 안에 번들 된 리소스 파일의 절대 경로를 얻는 방법입니다.

URI fileURI = Thread.currentThread().getContextClassLoader() 
       .getResource("ParcelsCountyRDMFinal5.shp").toURI(); 
filepath = new File(fileURI).getAbsolutePath(); 

이 나를 위해 작동합니다 ..