我正在阅读我的应用程序中的一些文件并将它们称为new File("src/main/resource/filename")
并且它可以正常工作。但是,当我使用Maven程序集插件打包jar并运行java - jar
时,我自然会收到错误:
发生错误:
src\main\resources\UPDATE.txt
(系统找不到指定的路径)
因为jar中没有src/main/resources
,我如何将src/main/resources
称为某种类路径变量,以便应用程序在独立的java和组装的jar中都可以工作?
答案 0 :(得分:3)
您需要使用Class.getResourceAsStream()方法加载文件
E.g。
InputStream str = getClass().getResourceAsStream("/UPDATE.txt");
或者如果您使用静态方法,则明确指定类
InputStream str = MyApp.class.getResourceAsStream("/UPDATE.txt");
编辑:
使用StreamSource
,只需将输入流传递到流源,例如
new StreamSource(getClass().getResourceAsStream("/UPDATE.txt"));
但请注意,如果资源不存在,getResourceAsStream将返回null,因此您可能希望显式检查并抛出异常。
答案 1 :(得分:2)
src / main / resources是一个开发时间约定,后面是maven项目放置除源代码之外的工件。一旦构建了jar,它们就会被添加到类路径中。所以在你的...场景UPDATE.TXT位于类路径的根目录。
因此,您应该引用类路径中的资源,而不是文件系统中的资源。 http://mindprod.com/jgloss/getresourceasstream.html