访问打包到jar文件中的文件

我创建了一个带有可运行编译类和一些模板文件(文本)的jar文件。 我现在想要使用打包到jar中的文本文件在应用程序中作为File对象进行分发。

我试图使用不起作用的相对路径。 如何获取指向jar中文本文件的File对象?

有没有办法做到这一点所以它既可以在运行解压缩的类文件时运行,也可以从具有相同代码的jar运行,或者我是否需要使用单独的函数?

从jar里面你可以像Class.getResourceAsStream(String)或类似的东西一样使用它。

从外面它不是文件的jar,所以你必须提取它,以实际使用内部文件

如果您在应用程序中使用JAR,那么Class.getResourceAsStream(String)将执行。

或者,如果您正在使用Servlet,那么ServletContext.getResourceAsStream(String)也会这样做。

这两个方法返回一个InputStream (属性资源数据),而不是你想要的File对象。