使用Java在Eclipse中正确读取资源

时间:2010-07-29 09:43:30

标签: java eclipse resources

我尝试加载此处的属性文件

<project>/resource/text/translation_en.properties

使用以下代码(在静态上下文中,现在没有从我初始化对象):

<This_Classes_name>.class.getResourceAsStream("/resource/text/translation_en.properties");

为什么我这样加载?首先我使用类Object,因为getResourceAsStream()不是静态的,我通过谷歌搜索我应该使用这个方法来加载我的属性文件。然后我使用/看起来Java不是相对于我的Main.java,而是项目。虽然,我仍然使用它。

如果在确切的位置有文件,这怎么可能不起作用? Java在这做什么?

2 个答案:

答案 0 :(得分:2)

资源需要位于Classpath中。一种选择是将整个/ resource文件夹复制到源文件夹中。另一个选项是创建一个仅包含资源的新源文件夹,并在那里移动/ resource文件夹。除非您想使用getResourceAsStream("/text/translation_en.properties");

,否则不要将/ resource文件夹设为源文件夹

答案 1 :(得分:1)

使用了getResourceAsStream,因为它可以读取整个类路径中的文件(包括类路径中JAR中的文件)

我认为该方法将文件名作为参数而没有任何路径,在您的示例中,类加载器将查找名为“/resource/text/translation_en.properties”的文件,而不将第一部分解释为路径。 尝试像这样加载:

this.getClass().getClassLoader().getResourceAsStream("translation_en.properties");

此外,您必须确保该文件实际位于类路径中。使用maven和eclipse时,应该有一个文件夹“target”,其中包含所有生成的类。当项目在eclipse中运行时,此文件夹将添加到类路径中。

希望有所帮助....