【问题标题】:Not able to load properties file in Java无法在 Java 中加载属性文件
【发布时间】:2011-11-27 14:39:58
【问题描述】:

我正在尝试加载属性文件。属性文件位于应用程序的类路径中。

 Properties p = new Properties();
 p.load(new FileInputStream("classpath:mail.properties"));
 System.out.println(p.get("hi"));

现在我说类路径,因为另一个名为 x.properties 的文件在这样的 xml 文件中被引用

<property name="x">
    <util:properties location="classpath:x.properties" />
</property>

我将 mail.properties 与 x.properties 放在同一个文件夹中,但我的 Java 程序找不到它?知道我错过了什么吗?

【问题讨论】:

    标签: java properties


    【解决方案1】:

    仅仅因为某些程序处理XML文件喜欢语法classpath:x.properties并不意味着它是一个普遍接受的语法在Java中

    如果您将"classpath:x.properties" 提供给FileInputStream,它将查找名为 classpath:x.properties 的文件。 (检查该特定构造函数的文档。)

    尝试提供该文件的完整路径。如果文件恰好在您的类路径上,您可以使用类似

    p.load(getClass().getResourceAsStream("mail.properties"));
    

    【讨论】:

    • getClass() 哪个类。例如,如果我从 TestProgram 运行 main 方法,它应该是 TestProgram.class.getClass().. 吗?
    • 那么你可以使用TestProgram.class.getResourceAsStream
    • hmm..我让 InputStream 为空。
    • 那么该文件可能在您的类路径的根目录中不可用。
    【解决方案2】:

    如果 mail.properties 确实在你的类路径中,你会更幸运地通过类加载器加载它:

    Properties p = new Properties();
    InputStream is = getClass().getClassLoader().getResourceAsStream("mail.properties");
    p.load(is);
    

    【讨论】:

    • 哈。看起来有一些竞争先把它放在那里。在我点击帖子之前弹出。 ;)
    • @Thor84no - 大声笑,在 点击帖子之前,你的答案就被点击了。时间/空间连续体问题? :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 2012-04-19
    • 2012-01-02
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 2011-06-14
    相关资源
    最近更新 更多