繁体   English   中英

Java中的类路径变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM