2010-01-15 99 views
4

我使用Netbeans开发了Java桌面应用程序。 在我的应用程序,我使用的一些属性文件,我把它放在项目文件夹下,这样我可以用这样的打包Java应用程序时,jar文件中不包含属性文件

Properties props = new Properties(); 
props.load(new FileInputStream("config.properties")); 

代码访问,但是当我部署和打包我的应用程序.jar文件,我找不到属性文件的位置,我的应用程序无法从属性文件读取值。

我该如何解决这个错误,以及我应该在哪里放置我的属性文件并加载它?

+0

检查我的附录。 – 2010-01-15 10:56:10

回答

5

把它放在/src/resources/下,然后像下面一样使用它。

ResourceBundle props = ResourceBundle.getBundle("resources.config"); 

NetBeans不包含项目目录下的文件。此外,您需要构建该项目,以便让NetBeans将properties文件放入/classes目录中。那么你应该可以通过运行你的应用程序或者只是一个特定的Java类来获得它。

干杯。

+0

我跟着你的指导,但程序抛出一个异常 java.util.MissingResourceException:无法找到捆绑的基本名称配置,地区en_US 在java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1521) 是java。 util.ResourceBundle.getBundleImpl(ResourceBundle.java:1260) – 2010-01-15 09:37:00

+0

查看我的附录。准确地说,试试这个'ResourceBundle.getBundle(“resources.config”)'。而且,在运行任何特定的Java类之前构建项目。 – 2010-01-15 10:41:22

2

要包括存在于classpath中的属性文件(即,如果它是某个地方/ src目录下,当你构建JAR文件),你可以使用的getResourceAsStream()是这样的:

Properties properties = new Properties(); 
properties.load(this.getClass().getResourceAsStream("/config.properties")); 

注文件名上的前导斜线。您也可以使用它来获取项目中不同包中的文件。

properties.load(this.getClass().getResourceAsStream("/com/company/project/config.properties")); 
2

在你的Java项目,在默认包(即.../src目录/),把这个文件:messages.properties

在你的代码,把这个:

ResourceBundle f = ResourceBundle.getBundle("messages"); 

这种方法具有迷人的方面,它实际上工作!

(有人编辑,文明的我原来的职位,其中有很多的尖叫声在里面。我看到一些漂亮的答案无效票获得,这是我还没有看到很长一段时间在这个网站。)

3

我从拉菲小子的解决方案开始,并没有奏效。那么,如果我已经完成了他所说的话,它就会奏效。这就是我所做的,也许它会添加一些有用的细节。

我一直叫这个项目后,我的包,所以我不知道,在NetBeans中有字面上,一个名为<default package>包。当我将我的config.properties文件拖到Source Packages级别时,看到一个<default package>。它被放置在src文件夹中,并建立在dist .jar文件的根目录下。之后,ralphie boy的解决方案就是剪贴。

如果你希望你的资源包或配置文件是在包,你必须包括在基本名称字符串它的路径,像

ResourceBundle f = ResourceBundle.getBundle("pkgname/config"); 

ResourceBundle f = ResourceBundle.getBundle("com/mycompany/pkgname/config"); 
相关问题