我正在开发一个应用程序,我必须指定一个名为dao.properties的文件的路径它工作得很好但是当我使用cmd执行jar时:java -jar StockManagement.jar我得到的错误是该文件是找不到(在netbeans中工作正常) 类和文件位于同一文件夹中。 我已经尝试了很多相对路径而没有任何作用,所以这是我最后的希望 这是代码和层次结构:
提前谢谢你
答案 0 :(得分:1)
如果您的文件位于代码库中,则应使用classLoader加载它。
答案 1 :(得分:0)
如果我没有弄错,你使用ClassLoader的方式是寻找相对于调用它的位置的文件路径。
从图片中看,您似乎正在使用DAOFactory类中的ClassLoader,是吗?您正在声明文件的路径
stock/DAO/dao.properties
如果您从DAOFactory调用它,Java会在
中查找该文件<where DAOFactory is>/stock/DAO/dao.properties
如果DAOFactory和dao.properties位于同一个文件中,我认为你的文件路径应该只是
dao.properties
所以它看起来与DAOFactory所在的文件夹相同。
编辑:使用DAOFactory类读入属性文件。
使用类似下面的代码片段,使用main方法从DAOFactory类调用此函数,以尝试查看是否可以在没有任何其他情况下读取属性文件。更改您在本地计算机上工作所需的任何类别或名称。
public static String getProperty(String property) {
String value = "";
try (InputStream is = DAOFactory.class.getResourceAsStream("dao.properties")) {
Properties prop = new Properties();
prop.load(is);
value = prop.getProperty(property);
} catch (Exception e) {
e.printStackTrace();
}
return value;
}