Ну, во-первых, this.getClass().getResource
не должен работать (хотя я не пробовал). Это не путь к классам, это ServletContext, поэтому вам нужно использовать ServletContext.getResource
.
Проблема в том, что файл не нужен: это может быть запись в WAR-архиве. Поэтому в зависимости от того, что именно вы знаете, ответ может быть разным.
Мы используем служебный класс Spring, который обрабатывает как файлы (через ServletContext.getResourcePaths
, если доступно), так и WAR (через ServletContext.getResource
). Если вы используете Spring, это может быть лучшим способом. Если вы этого не сделаете, вам, вероятно, придется заново внедрить решение.
В качестве альтернативы вы можете просто использовать ServletContext.getResourceAsStream
- не важно, где именно хранится ресурс. Поэтому, пока вам нужно его содержимое, а не путь, у вас все будет в порядке.