我们有一个需要读取属性文件的jar。需要编辑属性文件而不重建应用程序,因此它将从构建中排除。
为了让应用程序看到属性文件,将它放在java类路径上的文件夹中。用于运行应用程序的Windows命令行的格式如下:
java -cp application.jar;.\lib_folder\*; com.company.Start
Java正确地获取lib_folder
中的所有jar文件。属性文件放在同一个文件夹中,但应用程序无法看到它并抛出FileNotFoundException。我们做了什么明显的错误吗?
非常感谢
答案 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文件的顶级项目添加到类路径中。