无法通过URL访问.jar中的文件

我需要使用URL访问当前执行的.jar中的文件。

URL url = BlockConverter.class.getResource("/test.txt"); System.out.println(url.toString()); InputStream is = url.openStream(); 

这就是我所做的。 输出是:

 jar:file:/C:/Users/User/Desktop/SERVER/plugins/MyJar.jar!/test.txt 

我的InputStream在初始化时总是会抛出IOException,即使正确输出了URL。 那怎么可能呢? 为什么我不能打开流?

编辑:另外,请不要回答“使用getResourceAsStream”,因为它使用相同类型的代码:

 public InputStream getResourceAsStream(String name) { URL url = getResource(name); try { return url != null ? url.openStream() : null; } catch (IOException e) { return null; } } 

我会直接打开它,例如

 InputStream is = BlockConverter.class.getResourceAsStream("/test.txt"); 

上面的方法是我通常访问jar中的资源的方式(它将打开资源,无论它是否被打包在jar中,或者只是作为一个未打包的部署,请注意)