我创建了一个可运行的编译类和一些模板文件(文本)的jar文件。现在,我想将打包到jar中的文本文件用作应用程序中的File
对象进行分发。
我尝试使用相对路径,但并没有成功。如何获取指向存储在jar中的文本文件的File
对象?
是否有一种方法可以在运行未打包的类文件和具有相同代码的jar时都能正常工作,或者我需要使用单独的函数?
如果你想从jar包内部使用它,你可以像使用Class.getResourceAsStream(String)
一样使用它,或者类似的方法。
如果是从外部访问,那么这个文件并不是一个普通的文件,而是在jar包中,所以你需要先将其提取出来才能正常使用。
Class.getResourceAsStream(String)
}}将起作用。ServletContext.getResourceAsStream(String)
也可以。InputStream
(您的资源数据),而不是您想要的File
对象。
File
类型的templates-dir作为模板的基础目录传递给它。在从IDE运行时,使用普通的File对象指向该目录可以正常工作。现在我想让它也能够从单个Jar文件中运行。我已经成功地将文件打包到了jar文件中。我应该将文件提取到临时目录中,还是有更好的方法? - KissakigetResourceAsStream()
方法。 - jmj