Как я могу прочитать файл ресурса в неразорвавшемся файле войны, развернутом в Tomcat? - PullRequest
5 голосов
/ 06 января 2012

Я пытаюсь загрузить двоичный файл изображения, чтобы выполнить некоторую обработку внутри моего серверного Java-кода. В настоящее время я помещаю свое изображение в пакет, где существует мой исполняющий класс, и вызываю:

Image img = Image.getInstance(this.getClass().getResource("logo.png"));

Это прекрасно работает, когда я запускаю Tomcat на своем компьютере для разработки в разнесенной конфигурации войны, но когда я развертываю на сервере, на котором запущен Tomcat, где он не взрывает файлы войны, вызов getResource возвращает ноль.

Я также попытался переместить изображение в корневой контекст и получить к нему доступ следующим образом:

Image img = Image.getInstance(this.getClass().getResource("/../../logo.png"));

Опять же, это работает на моей коробке разработки, но не тогда, когда я развертываю ее в другом месте.

Есть ли лучший способ получить доступ к этому файлу? Что я делаю не так?

Спасибо !!

Ответы [ 2 ]

6 голосов
/ 07 января 2012

Если вы строите с использованием Maven, вам нужно убедиться, что изображение действительно помещается в архив.

Поместите ресурсы в каталог src/main/resources. Затем получите к ним доступ:

this.getClass().getResource("/logo.png"); 

или:

Thread.currentThread().getContextClassLoader().getResource("logo.png"); 

(примеры кода из комментария выше, но в ответе, чтобы быть более заметным)

1 голос
/ 06 января 2012

Вы можете поместить свои изображения в корень вашего classpath и попробовать это:

Thread.currentThread().getContextClassLoader()
               .getResource("logo.png");
...