Как получить корневой путь веб-проекта в Java EE

Я использую Java EE для моего динамического веб-проекта. И я поместил файл sitemap.xml в корневой каталог. Теперь мне нужен путь к этому файлу для изменения. Я попробую:

String path = getClass().getClassLoader().getResource(".").getPath() +"\\sitemap.xml";

но The system cannot find the file specified, Я использую окно, что мне нужно изменить, когда я загружаю свой проект на хостинг Linux?

2 ответа

Решение

ClassLoader#getResource() находит только пути к классам, а не веб-ресурсы. sitemap.xml это явно веб-ресурс. Вы должны использовать ServletContext#getResource()вместо этого, или его аналог JSF ExternalContext#getResource() - как указано в истории ваших вопросов, вы используете JSF.

URL url = externalContext.getResource("/sitemap.xml");

Или только для чтения:

InputStream input = externalContext.getResourceAsStream("/sitemap.xml");

Как правило, вас вообще не должен интересовать фактический путь к файловой системе диска. Обычно это местоположение временной папки или даже место в памяти.


Не имеющий отношения к конкретному вопросу, написание к нему - отдельная история. Ни ресурсы classpath, ни веб-ресурсы не предназначены для записи из приложения Java EE. Даже если бы это было возможно (т. Е. Это не ресурс в памяти), все изменения будут полностью потеряны при каждом повторном развертывании WAR или даже при перезапуске сервера по той простой причине, что эти изменения не отражаются в оригинале. Файл WAR. Учитывая конкретное имя файла "sitemap.xml", у меня сложилось впечатление, что вы намеревались создать более постоянное хранилище. В этом случае я настоятельно рекомендую поискать другое решение. Например, сохраняйте файл по фиксированному пути вне WAR или просто в структуре данных в базе данных.

Прежде всего, старайтесь не использовать разделитель файлов Windows "\", потому что он зависит от платформы. Вместо этого вы можете использовать "/" (насколько я помню, его следует заменить JVM на подходящий разделитель) или, что еще лучше, File.separator.

Другие вопросы по тегам