我正在我的应用程序中读取一些文件并将它们称为 new File("src/main/resource/filename")
并且它有效。但是,当我使用 Maven 程序集插件打包 jar 并运行 java - jar
时,自然会出现错误:
Error occured:
src\main\resources\UPDATE.txt
(The system cannot find the path specified)
因为 jar 中没有 src/main/resources
,我如何将 src/main/resources
引用为某种类路径变量,以便应用程序既可以在独立的 java 中运行,也可以在组装的 jar 中运行?
最佳答案
您需要使用 Class.getResourceAsStream() 方法加载文件
例如
InputStream str = getClass().getResourceAsStream("/UPDATE.txt");
或者如果你在静态方法中,那么显式指定类
InputStream str = MyApp.class.getResourceAsStream("/UPDATE.txt");
编辑:
使用StreamSource
,只需将输入流传递到流源,例如
new StreamSource(getClass().getResourceAsStream("/UPDATE.txt"));
但请注意,如果资源不存在,getResourceAsStream 将返回 null,因此您可能需要明确检查并抛出异常。
关于java - java中的类路径变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3237166/