2016-12-29 9 views
0

스프링 부트 jar로 작업 중이며 내 구조에 중첩 된 jar가 있습니다. 클래스 파일에서 원시 바이트를 읽으려고합니다. 다음 URL에서 InputStream을 얻고 싶습니다.중첩 된 jar에있는 클래스에서 InputStream을 가져 오는 방법은 무엇입니까?

"jar : file :/D : /work/dev/target/first.jar! /BOOT-INF/lib/second.jar!/a/b/c/Data.class "

나는

InputStream i = new URL(str).openStream(); 

을 시도하지만이 (FileNotFoundException이)를 작동하지 않습니다. 스프링 부트 API를 사용하고 싶지 않습니다. 그 URL은 꽤 표준으로 보였기 때문에 이것을 달성 할 수있는 방법이 있어야한다고 생각합니다.

+0

런타임에 당신이 ressource를로드 할 곳에서 :

예 경우, 예를 들어, Classloader.getResourceAsStream()

를 사용할 수 있습니까? 스프링 부트 단지에 외부에서 접근하려는 인상을줍니다. – davidxxx

+0

의견을 주셔서 감사합니다. 나는 first.jar에서 이것을 달성하기를 원했습니다. 그것이 런타임입니다. 또한 위에서 언급 한 URL에 액세스 할 수있게되었습니다. 그대로, getResourceAsStream 작업을 수행합니다. – Icarus3

답변

1

"second.jar"는 클래스 경로에 있습니까?

Thread.currentThread().getContextClassLoader().getResourceAsStream("a/b/c/Data.class")