在jar中的jar中获取文件

don*_*ata 6 java jar

我有这样的设置:

  • outer.jar
    • inner.jar
      • file.txt的

所以,我正在执行outer.jar并在它的主类中:

URL url = Main.class.getClassLoader().getResource("file.txt");
Run Code Online (Sandbox Code Playgroud)

url是:'jar:file:outer.jar!/inner.jar!/file.txt'

但是,如果我尝试阅读它:

url.openStream()
Run Code Online (Sandbox Code Playgroud)

我得到一个例外

Exception in thread "main" java.io.FileNotFoundException: JAR entry inner.jar!/file.txt not found in outer.jar
at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:142)
at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:150)
at java.net.URL.openStream(URL.java:1038)
at Main.main(Main.java:15)
Run Code Online (Sandbox Code Playgroud)

文件肯定在那里.JarURLConnection是不可能的?

don*_*ata 1

我们最终使用了 Maven Shade 插件 ( http://maven.apache.org/plugins/maven-shade-plugin/ )。