Java ClassPath에 상대 디렉토리 추가 및 ClassLoader ()를 사용하여 getResourceasstream (“”)
-
20-08-2019 - |
문제
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"에 있습니다.
제휴하지 않습니다 StackOverflow