如何从嵌套 jar 中的 class 获取 InputStream?

How to get InputStream from class which is in nested jar?

我正在使用 Spring 启动 jar,我的结构中有嵌套的 jar。 我正在尝试从 class 文件中读取原始字节。我想从以下 URL

获取 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)。 我不想使用 spring-boot 的 API。由于 URL 看起来很标准,我希望应该有办法实现这一点。

"second.jar" 是否在类路径中?

如果是,请使用 Classloader.getResourceAsStream()

例如:

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