Найти путь к файлу в том же каталоге во время 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";