执行jar时相对路径不起作用

时间:2015-10-22 15:37:09

标签: java io

我正在开发一个应用程序,我必须指定一个名为dao.properties的文件的路径它工作得很好但是当我使用cmd执行jar时:java -jar StockManagement.jar我得到的错误是该文件是找不到(在netbeans中工作正常) 类和文件位于同一文件夹中。 我已经尝试了很多相对路径而没有任何作用,所以这是我最后的希望 这是代码和层次结构:

Hierarchy

Code

提前谢谢你

2 个答案:

答案 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;
}