我正在开发一个应用程序,我必须指定一个名为dao.properties的文件的路径,它工作得很好,但是当我使用cmd执行jar时:java -jar StockManagement。 jar我得到的错误,该文件没有找到(它在netbeans中工作正常) 类和文件在同一个文件夹中。 我已经尝试了很多相对路径并没有什么作品,所以这是我最后的希望 这里是代码和层次结构:相对路径在执行jar时不起作用
感谢Ÿ提前
我正在开发一个应用程序,我必须指定一个名为dao.properties的文件的路径,它工作得很好,但是当我使用cmd执行jar时:java -jar StockManagement。 jar我得到的错误,该文件没有找到(它在netbeans中工作正常) 类和文件在同一个文件夹中。 我已经尝试了很多相对路径并没有什么作品,所以这是我最后的希望 这里是代码和层次结构:相对路径在执行jar时不起作用
感谢Ÿ提前
如果我没有弄错,你使用ClassLoader的方式是寻找一个相对于被调用的文件路径。
从图中看来,您使用的是DAOFactory类中的ClassLoader,对吗?你声明的路径,你的文件是
stock/DAO/dao.properties
如果你从DAOFactory调用它时,Java在文件中
<where DAOFactory is>/stock/DAO/dao.properties
如果DAOFactory和dao.properties驻留在同文件我想你的文件路径应该只是
dao.properties
因此,它看起来在DAOFactory是在同一个文件夹中。
编辑:使用DAOFactory类读取属性文件。
使用类似下面的代码片段中,从仅使用的主要方法试试,看看您是否可以读取属性文件,而无需任何其他的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;
}
嗨,摩根感谢您的回答 它们位于相同的文件夹中,并且我在发布之前试过这个,它没有工作 – Sara
在某些时候,我看到你正在使用线程来尝试读取你的属性文件。如果使用DAOFactory类而不是线程怎么办?看看编辑的答案以上? – morganw09dev
这就是我做Morgan的时候,我用DAOFactory代替线程 作为F illippo suggedted 您的评论也帮了我很多,我了解了一些模糊的东西,非常感谢你 – Sara
http://stackoverflow.com/a/7098501/1352766这应该为您提供一些有关您的问题的信息。 – morganw09dev
你能还张贴您正在使用,以试图加载文件中的代码片段? – morganw09dev
我可以在评论中做到吗? – Sara