我使用Netbeans开发了Java桌面应用程序。 在我的应用程序中,我使用了一些属性文件,然后将它放在Project文件夹下,以便我可以使用类似的代码访问它
Properties props = new Properties();
props.load(new FileInputStream("config.properties"));
但是当我将我的应用程序部署并打包到.jar文件时,我无法找到属性文件的位置,而我的应用程序无法从属性文件中读取值。
如何修复该错误,我应该在哪里放置我的属性文件并加载它?
答案 0 :(得分:5)
将其放在/src/resources/
下,然后像下面一样使用它。
ResourceBundle props = ResourceBundle.getBundle("resources.config");
NetBeans不包含项目目录下的文件。此外,您需要构建项目,以便让NetBeans将properties
文件放在/classes
目录中。然后你应该能够通过运行你的应用程序或只是一个特定的相关Java类来获取它。
干杯。
答案 1 :(得分:3)
我从ralphie boy的解决方案开始,它没有用。好吧,如果我做了他说的话,它会奏效。这就是我所做的,也许它会增加一些有用的细节。
我总是在项目之后命名我的包,所以我不知道在NetBeans中有字面意思,一个名为<default package>
的包。当我将config.properties文件拖到源包级别时,低并看到<default package>
。它被放置在src文件夹中,并在dist .jar文件的根目录下构建。在那之后,ralphie男孩的解决方案是剪切和粘贴。
如果您希望资源包或配置文件在包中,则必须在baseName字符串中包含它的路径,例如
ResourceBundle f = ResourceBundle.getBundle("pkgname/config");
或
ResourceBundle f = ResourceBundle.getBundle("com/mycompany/pkgname/config");
答案 2 :(得分:2)
要包含类路径中存在的属性文件(即,如果它在构建jar文件时位于/ src目录下的某个位置),可以像这样使用getResourceAsStream():
Properties properties = new Properties();
properties.load(this.getClass().getResourceAsStream("/config.properties"));
注意文件名的前导斜杠。您还可以使用它来获取项目中不同包中的文件。
properties.load(this.getClass().getResourceAsStream("/com/company/project/config.properties"));
答案 3 :(得分:2)
在Java项目中,在默认包(即... / src /)中,输入以下文件: messages.properties
在你的代码中,输入:
ResourceBundle f = ResourceBundle.getBundle("messages");
这种方法具有迷人的方面,它实际上有效!
(有人编辑并文明我的原帖,其中有很多SCREAM。我看到一些非常无效的答案获得投票,我在这个网站上很长一段时间没见过。)