【问题标题】:Failing to load properties file from the same package in Java无法从 Java 中的同一包中加载属性文件
【发布时间】:2014-08-01 06:25:17
【问题描述】:

我有一个位于com.foo.bar 的包裹。在这个包中,我有一个config.properties 文件和一个Test.java 类。我试图简单地将属性文件加载到输入流中。我试过这个:

InputStream is = Test.class.getClassLoader().getResourceAsStream("config.properties");
System.out.println("stream: " +  is );

还有:

String path = "com.foo.bar.config.properties";
InputStream is = Test.class.getClassLoader().getResourceAsStream(path);
System.out.println("stream: " +  is );

在这两种情况下,我都得到:

stream: null

作为值。不抛出异常。

我做错了什么?

【问题讨论】:

  • com.foo.bar.config.properties 不是路径。尝试提供绝对路径
  • 它对我有用 com/foo/bar/config.properties 所以也许你在其他地方有问题
  • @morgano 是的,这行得通。以前我的resources 目录没有添加到 pom.xml,所以它没有被编译到 jar 中。将它添加到 pom 修复它。

标签: java io classloader inputstream


【解决方案1】:

试试这个:

InputStream is = Test.class.getClassLoader().getResourceAsStream("com/foo/bar/config.properties");

重要的是:不要在开头使用'/'(这是一个常见的错误)

【讨论】:

  • 这行得通,但由于它们在同一个包中,不应该只是 config.properties 也行吗?
  • @ClickUpvote getResourceAsStream(String id) 的参数是标识符而不是文件路径,因此您的资源(您的属性文件)具有标识符 com/foo/bar/config.properties
  • @这就是为什么你不在开头使用'/' :-)
猜你喜欢
  • 2010-09-24
  • 2011-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 2012-04-19
  • 2021-11-29
相关资源
最近更新 更多