Найти путь к файлу в том же каталоге во время RUNTIME

У меня есть приложение struts2 и hibernate. Что я собираюсь сделать, так это то, что, если конфигурация базы данных недействительна, я получаю ее от пользователя и изменяю 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, и везде с ним (пример файла war)

1 ответ

Решение

После долгих поисков я наконец нашел способ получить реальный путь приложения во время выполнения. Я публикую это на тот случай, если это кому-нибудь понадобится.

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

и сейчас (в моем случае)

String filepath =  app_path  + "WEB-INF/classes/hibernate.cfg.xml";
Другие вопросы по тегам