我尝试加载此处的属性文件
<project>/resource/text/translation_en.properties
使用以下代码(在静态上下文中,现在没有从我初始化对象):
<This_Classes_name>.class.getResourceAsStream("/resource/text/translation_en.properties");
为什么我这样加载?首先我使用类Object,因为getResourceAsStream()不是静态的,我通过谷歌搜索我应该使用这个方法来加载我的属性文件。然后我使用/看起来Java不是相对于我的Main.java,而是项目。虽然,我仍然使用它。
如果在确切的位置有文件,这怎么可能不起作用? Java在这做什么?
答案 0 :(得分:2)
资源需要位于Classpath中。一种选择是将整个/ resource文件夹复制到源文件夹中。另一个选项是创建一个仅包含资源的新源文件夹,并在那里移动/ resource文件夹。除非您想使用getResourceAsStream("/text/translation_en.properties");
答案 1 :(得分:1)
使用了getResourceAsStream,因为它可以读取整个类路径中的文件(包括类路径中JAR中的文件)
我认为该方法将文件名作为参数而没有任何路径,在您的示例中,类加载器将查找名为“/resource/text/translation_en.properties”的文件,而不将第一部分解释为路径。 尝试像这样加载:
this.getClass().getClassLoader().getResourceAsStream("translation_en.properties");
此外,您必须确保该文件实际位于类路径中。使用maven和eclipse时,应该有一个文件夹“target”,其中包含所有生成的类。当项目在eclipse中运行时,此文件夹将添加到类路径中。
希望有所帮助....