Я использую Spring Boot 2.2.2 с JSF. Мой проект структурирован так:
src | main | java ...
\ resources | application.properties
\ webapp | WEB-INF | faces-config.xml
\ index.xhtml
index.x html устанавливается как страница приветствия следующим образом:
@Configuration
public class WelcomeFileServletConfiguration implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("forward:/index.xhtml");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
}
Я создаю приложение с помощью Maven (хотя я сначала использовали gradle, который выдал ту же ошибку, поэтому, скорее всего, это не имеет значения) * папка вот так:
java -jar target/my-app.jar
работает отлично. Когда я захожу на localhost: 8080, я вижу, что моя страница JSF отображается именно так, как я хочу.
Однако, если я запускаю приложение из любого другого каталога, например:
cd ..
java -jar my-project/target/my-app.jar
it все еще запускается нормально, но когда я получаю доступ к localhost: 8080, я получаю это сообщение:
Произошла непредвиденная ошибка (тип = Не найдено, статус = 404). /index.xhtml Не найден в ExternalContext в качестве ресурса
Я предполагаю, что по какой-то причине ресурсы (по крайней мере, x html, но, возможно, также и face-config) не являются взял из банки, но из исходной папки. Это явно не то, что я хочу. Может кто-нибудь сказать мне, что я делаю не так?