2010-12-28 3 views
19

항아리 내에 구성 파일을 패키지화해야합니다. 구성 파일은 jar 파일의 루트 아래에 있습니다.항아리 내에서 파일로드

Caused by: java.lang.IllegalArgumentException: URI is not hierarchical at java.io.File.(Unknown Source)

File url = new File(MyClass.class.getClassLoader().getResource("my.conf").toURI()); 

답변

28

대신 getResourceAsStream()을 사용해야합니다. 파일이 JAR에 포함 된 경우 URI는 가장 가능성이 높은 번들입니다. // URI

InputStream is = this.getClass().getResourceAsStream("my.conf"); 
4

파일은 MyClass에와 같은 패키지에 있어야합니다 : 그러나 나는 다음과 같은 오류가 발생했습니다. 방금 File 객체를 생성한다는 것을 알았습니다. 대신 getResourceAsStream()을 사용해보십시오. 클래스 경로 자원에서 내용을 읽으려는 경우 올바른 방법입니다. 여기 is the example.

+0

보정 (항아리의 루트와 동일)의 루트와 함께 하나 개의 폴더에있는 파일이어야하기 만하면됩니다

Class.getResourceAsStream("/" + "my.conf"); 

이를 사용하십시오 파일이 발견되었지만 병 안에 있기 때문에 URI가 계층 적 오류가 아닙니다 – user217631

+0

스택 추적을 게시합니다 –

+0

다음 오류는 "스레드"주 "java.lang.IllegalArgumentException : URI가 계층 구조가 아닌 예외"로 표시되어야합니다. – hiropon

7

왜 파일이 ​​필요합니까? 읽고해야하는 경우 설정은 패키지

+1

이유 거기에 문자열을 연결 하시겠습니까? – pstanton

+2

정말 문제가되지 않지만 "/"+ fileName을 쓰고 싶지만 변수를 실제 이름으로 변경했습니다. –