Java ClassPath에 상대 디렉토리 추가 및 ClassLoader ()를 사용하여 getResourceasstream (“”)

StackOverflow https://stackoverflow.com/questions/842538

문제

Java ClassPath 및 사용에 상대 디렉토리 (예 : Foo/Bar/Plugh)를 추가 할 수 있습니까?

InputStream in = getClassLoader().getResourceAsStream("xyzzy.properties");

foo/bar/plugh/xyzzy.properties를 가져 오려면?

내 클래스 경로는 다음과 같습니다.

foo.jar;foo/bar/plugh;xyz.jar 

그리고 Foo와 XYZ Jars의 클래스와 리소스를 사용할 수는 있지만 Plugh 디렉토리에서는 사용할 수 없습니다. 그 경우 in 항상 null입니다.

나는 이것을 작동시킬 수 없으며 이것이 단지지지되지 않은지 확실하지 않습니다. 나는 미묘한 것을 놓치거나 내가 뭔가 잘못하고 있는지 확실하지 않습니다. 절대 경로를 사용해야합니까?

도움이 되었습니까?

해결책

어쩌면 나는 당신이하려는 일을 오해하고 있지만 클래스 경로에 폴더가 있다면 그 아래의 모든 파일도 클래스 경로에 있어야한다는 것을 의미합니다. 그렇지 않은 경우 항상 클래스 경로에서 각 .properties 파일을 전달할 수 있습니다.

그러나 어느 쪽이든, 파일이 포함 된 파일/폴더가 클래스 경로에 있으므로 다음을 수행 할 수 있어야합니다.

InputStream in = new FileInputStream("classpath:xyz.properties")

그리고 "foo/bar/plugh"가 클래스 경로에 있기 때문에 xyz.properties를 찾을 장소 중 하나는 "foo/bar/plugh"에 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top