在运行时查找同一目录中文件的路径

Find the path of file in same directory during RUNTIME

我有一个 struts2 和休眠应用程序。我打算做的是,如果数据库配置无效,我会从用户那里收到它并使用更新的设置修改 hibernate.hbm.xml。我能够检查并接收用户的设置,唯一的问题是 domparser 找不到我的 hibernate.cfg.xml.

String filepath = "hibernate.cfg.xml";
    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    Document doc = docBuilder.parse(filepath);

当以普通用户身份部署应用程序时,我得到这个

/home/uzumaki/hibernate.cfg.xml (No such file or directory)

当我 运行 作为 root 时,

/hibernate.cfg.xml (No such file or directory)

使用 File("").getAbsolutePath()) 并与 hibernate.cfg.xml 连接也给了我同样的错误。 该文件当然不存在,它与我的 java code/class 在同一文件夹中,并且随处可见(例如 war 文件)

经过大量搜索,我终于找到了一种在运行时获取应用程序真实路径的方法。我发布这个以防有人需要它。

HttpServletRequest servletRequest = ServletActionContext.getRequest();
String app_path;
app_path = servletRequest.getSession().getServletContext().getRealPath("/");

现在(以我为例)

String filepath =  app_path  + "WEB-INF/classes/hibernate.cfg.xml";