繁体   English   中英

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

[英]relative path doesn't work when executing jar

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

层次结构

码

提前谢谢你

如果文件在代码库中,则应使用classLoader进行加载。

如果我没有记错的话,那么您使用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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM