Я использовал maven для создания учебника https://spring.io/guides/gs/uploading-files/
Все используемые мной коды были скопированы.
Приложение может работать, но я получаю сообщение об ошибке:
Страница ошибки Whitelabel Это приложение не имеет явного сопоставления для / error, поэтому вы рассматриваете это как запасной вариант. Вт, 30 июня, 17:24:02 CST 2015 г. Произошла непредвиденная ошибка (тип = не найдено, статус = 404). Нет доступных сообщений
Как я могу это исправить?
spring
spring-mvc
file-upload
upload
Дэн Стив
источник
источник
Ответы:
Убедитесь, что ваш основной класс находится в корневом пакете над другими классами.
Когда вы запускаете приложение Spring Boot (то есть класс, помеченный @SpringBootApplication), Spring будет сканировать только классы, расположенные ниже вашего основного пакета классов.
источник
Когда мы создаем загрузочное приложение Spring, мы аннотируем его
@SpringBootApplication
аннотациями. Эта аннотация «завершает» многие другие аннотации, необходимые для работы приложения. Одна из таких аннотаций -@ComponentScan
аннотация. Эта аннотация сообщает Spring искать компоненты Spring и настраивать приложение для запуска.Класс вашего приложения должен быть наверху иерархии пакетов, чтобы Spring мог сканировать подпакеты и находить другие необходимые компоненты.
Ниже фрагмент кода работает, поскольку пакет контроллера находится в
com.test.spring.boot
пакетеНиже фрагмент кода НЕ работает, поскольку пакет контроллера НЕ находится под
com.test.spring.boot
пакетомИз документации Spring Boot:
источник
Вы можете решить эту проблему, добавив
ErrorController
в свое приложение. Вы можете сделать так, чтобы контроллер ошибок возвращал нужное вам представление.Контроллер ошибок в моем приложении выглядит так:
Вышеупомянутый класс основан на классе Springs BasicErrorController .
Вы можете создать экземпляр вышеуказанного
ErrorController
в@Configuration
файле следующим образом:Вы можете переопределить значение
ErrorAttributes
по умолчанию , реализовав ErrorAttributes . Но в большинстве случаев атрибутов DefaultErrorAttributes должно быть достаточно.источник
BasicErrorController
класс 404s.BasicErrorController
больше не подходит, вы можете обновить?BasicErrorController
теперь исправлена.В моем случае класс контроллера был аннотирован
@Controller
. Изменив это, чтобы@RestController
решить проблему. В основном@RestController
это@Controller + @ResponseBody
так либо использовать@RestController
, либо@Controller
с@ResponseBody
аннотацией к каждому методу.Некоторые полезные примечания здесь: https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/
источник
@RestController
он неявно добавляет@ResponseBody
аннотацию, но если вы используете@Controller
аннотацию, вы должны явно добавить эту аннотацию самостоятельно.в моем случае это из-за позиции пакета, то есть пакет контроллера должен быть выше пакета основного класса
если мой пакет основного класса - это
package co.companyname.spring.tutorial;
любой пакет контроллера,package co.companyname.spring.tutorial.WHAT_EVER_HERE;
после завершения кодирования нажмите загрузочную панель
последнее, что нужно сделать, чтобы убедиться, что ваш контроллер отображает или не только консоль, вы должны увидеть что-то smilliar
счастливое кодирование
источник
Попробуйте добавить зависимость.
источник
Это происходит, когда явная страница ошибки не определена. Чтобы определить страницу ошибки, создайте отображение / error с представлением. например, приведенный ниже код отображается на строковое значение, возвращаемое в случае ошибки.
источник
Я добавил эту зависимость, и она решила мою проблему.
источник
Я разрабатываю приложение Spring Boot в течение нескольких недель .. И я получил ту же ошибку, что и ниже;
Когда я получаю это сообщение об ошибке, я понял, что мой контроллер или класс контроллера отдыха отмечен в моем проекте. Я имею в виду, что все наши пакеты контроллеров не совпадают с пакетом основного класса, который включает аннотацию @SpringBootApplication. Я имею в виду, что вам нужно добавить имя вашего пакета контроллера в аннотацию @ComponentScan к вашему основному классу, который включает аннотацию @SpringBootApplication. Если вы пишете коды ниже ваша проблема будет решена ... Самое главное, вы должны добавить весь пакет вашего контроллера в аннотацию @ComponentScan, как я сделал в приведенном ниже
Я надеюсь, что эти коды кому-то помогут ...
Если вы найдете другой способ решить эту ошибку или у вас есть предложения для меня, напишите в комментарии ... спасибо ...
источник
В основном классе после настройки "@SpringBootApplication" добавление "@ComponentScan" без каких-либо аргументов у меня сработало !!!
Основной класс:
Класс RestController:
PS: Не упустите возможность запустить команды mvn clean и mvn install перед запуском приложения.
источник
Довольно поздно на вечеринку. Согласно официальной документации Spring «Spring Boot устанавливает белую страницу с ошибкой, которую вы видите в клиенте браузера, если вы сталкиваетесь с ошибкой сервера». https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-customize-the-whitelabel-error-page
server.error.whitelabel.enabled=false
в файле application.yml или application.properties .2. Рекомендуемый способ - настроить страницу ошибки так, чтобы ее мог понять конечный пользователь. Под ресурсами / шаблонами папке создайте файл error.html и добавьте зависимость в файл pom.xml.
Spring автоматически выберет страницу error.html в качестве шаблона ошибки по умолчанию. Примечание: - Не забудьте обновить проект maven после добавления зависимости.
источник
Вы можете получить сообщение об ошибке, т.е.
«Это приложение не имеет явного сопоставления для / error, поэтому вы рассматриваете это как запасной вариант».
Это связано с тем, что он не сканирует ваши классы Controller и Service, которые вы должны указать в своем классе main () следующим образом:
Примечание: здесь я указал различные классы, такие как демо, контроллер и сервис, которые нужно сканировать, только тогда они будут работать правильно.
источник
Вы должны организовать пакеты так, чтобы пакет, содержащий общедоступный статический main (или где вы написали @SpringBootApplication), был отцом всех ваших других пакетов.
источник
По умолчанию весенняя загрузка будет сканировать текущий пакет на предмет определения bean-компонента. Поэтому, если ваш текущий пакет, в котором определен основной класс, а пакет контроллера не совпадает, или пакет контроллера не является дочерним пакетом вашего основного пакета приложения, он не будет сканировать контроллер. Чтобы решить эту проблему, можно включить список пакетов для определения bean-компонента в основной пакет.
или создать иерархию пакетов, в которой дочерний пакет является производным от основного пакета
источник
Проблема в том, что вы переходите на localhost: 8080 / вместо localhost: 8080 / upload, как указано в руководстве. Spring Boot имеет страницу ошибок по умолчанию, используемую при переходе к неопределенному маршруту, чтобы не выдавать специфические данные сервера (что можно рассматривать как угрозу безопасности).
У вас есть варианты: посетить правильную страницу, добавить собственную целевую страницу или переопределить белую страницу ошибки .
Чтобы упростить эту конкретную ситуацию, я обновил руководство, теперь в нем используется / вместо / upload.
источник
Я знаю, что это не совсем ответ на вопрос, но это первый вопрос, который появляется в Google :)
Проблема («Это приложение не имеет явного сопоставления для / error») появляется при попытке доступа к пользовательскому интерфейсу Swagger.
В моем случае проблемы были вызваны @RestController ("/ endpoint"), который не обрабатывается должным образом с помощью swagger.
Итак, это привело к ошибкам:
И это было нормально
источник
это может произойти, если вы забудете аннотацию @RestController поверх вашего класса контроллера. import import org.springframework.web.bind.annotation.RestController;
и добавьте аннотацию, как показано ниже
см. простой пример ниже
источник
Измените @Controller на @RestController в своем классе контроллера, и все должно пройти гладко.
источник
Я тоже получил ту же ошибку и смог устранить ошибку, добавив приведенную ниже зависимость к моему pom.xml.
Причина в том, что мы используем JSP в качестве представления. Контейнер встроенных сервлетов по умолчанию для Spring Boot Starter Web - это tomcat. Чтобы включить поддержку JSP, нам нужно добавить зависимость от tomcat-embed-jasper.
В моем случае я возвращал JSP как представление из контроллера. Надеюсь, этот ответ поможет кому-то, кто борется с той же проблемой.
источник
Я столкнулся с той же проблемой, используя gradle, и она была решена добавлением следующих зависимостей:
раньше мне не хватало последнего, вызывая ту же ошибку.
источник
Я столкнулся с этой проблемой, а позже понял, что мне не хватало
@Configuration
аннотации вMvcConfig
классе, которая в основном выполняет сопоставление дляViewControllers
иsetViewNames
.Вот содержимое файла:
Надеюсь, это кому-то поможет !!
источник
Убедитесь, что у вас есть jasper и jstl в списке зависимостей:
Вот рабочий стартовый проект - https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp
Автор: Биджу Кунджуммен
источник
Я должен упомянуть этот способ и дать ссылку на пакеты, и это сработало. Вы можете исключить
@EnableAutoConfiguration
эту аннотацию, но мне необходимо обойти любые зависимости, связанные с БД.источник
Главный класс должен находиться за пределами древовидной структуры пакетов приложений. Например:
источник
Все, что я сделал для решения такой проблемы, - это упомянул аннотацию @Configuration в классе MVCConfig.
Как этот :
источник
У меня была аналогичная ошибка, я использую весеннюю загрузку и скорость, мое решение - проверить файл application.properties, spring.velocity.toolbox-config-location, обнаружил, что это свойство неверно
источник
В моем случае эта проблема возникает при запуске SpringApplication из IntelliJ после его первого запуска с помощью maven.
Чтобы решить проблему, я бегу первым
mvn clean
. Затем я запускаю SpringApplication из IntelliJ.источник
Убедитесь, что ваш файл Main. класс должен быть поверх ваших контроллеров. В случае следующего примера:
Main.class, содержащий:
EmployeeController. класс, содержащий:
Если ваш основной класс находится в корневой папке, например, по этому пути: {projectname} / src / main / java / main, убедитесь, что ваши контроллеры ниже вашего основного класса. Например, {projectname} / src / main / java / main / controllers .
источник
В вашем java-файле (скажем: Viper.java) с основным классом добавьте: "@RestController" и @RequestMapping ("/")
источник
Убедитесь, что вы отметили класс контроллера аннотацией @RestController .
источник