放置属性文件的位置,以便java命令在类路径中看到它

时间:2014-07-29 19:08:48

标签: java

我们有一个需要读取属性文件的jar。需要编辑属性文件而不重建应用程序,因此它将从构建中排除。

为了让应用程序看到属性文件,将它放在java类路径上的文件夹中。用于运行应用程序的Windows命令行的格式如下:

java -cp application.jar;.\lib_folder\*; com.company.Start

Java正确地获取lib_folder中的所有jar文件。属性文件放在同一个文件夹中,但应用程序无法看到它并抛出FileNotFoundException。我们做了什么明显的错误吗?

非常感谢

3 个答案:

答案 0 :(得分:1)

类解析从cp中给出的路径开始。如果在没有星号的类路径中提供。\ lib_folder,并且属性文件在此文件夹中,则它将被拾取。目前,属性文件本身位于类路径中。

答案 1 :(得分:0)

  

它被放置在java类路径

上的文件夹中

您的类路径仅包含JAR,符号.\lib_folder\*表示文件夹中的每个jar,但不包含文件夹本身。

  

属性文件放在同一个文件夹中,但应用程序看不到它

需要添加文件夹本身,但我怀疑你不应该将文件添加到" lib"目录,你应该使用不同的目录,如" config"

  

并抛出FileNotFoundException。

当您尝试获取资源时,您获得null而不是此例外。请尝试以下

InputStream is = getClass().getClassLoader().getResourceAsStream("resource.properties");

如果找不到文件,则返回null

  

我们做了什么明显错误的事吗?

FileInputStream查找直接文件,它不使用类路径。

答案 2 :(得分:0)

如果您正在使用ResourceBundle来读取属性文件,那么只需将包含.properties文件的顶级项目添加到类路径中。