[英]Classpath variable in java
我正在读取应用程序中的一些文件,并将它们称为new File("src/main/resource/filename")
并且可以正常工作。 但是当我用Maven程序集插件打包jar并运行java - jar
,自然会出现错误:
发生错误:
src\\main\\resources\\UPDATE.txt
(系统找不到指定的路径)
由于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
,只需将输入流传StreamSource
流源中,例如
new StreamSource(getClass().getResourceAsStream("/UPDATE.txt"));
但是请注意,如果资源不存在,则getResourceAsStream返回null,因此您可能需要显式检查并抛出异常。
src / main / resources是开发时间约定,后跟maven项目以放置源代码以外的工件。 一旦构建了jar,就将它们添加到类路径中。 因此,在您的示例场景中,UPDATE.TXT位于类路径的根目录下。
因此,您应该从类路径而不是文件系统中引用资源。 http://mindprod.com/jgloss/getresourceasstream.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.