Не запускается приложение в связке Idea+java+Spring+Maven+Tomcat10.
Ошибка 404 в браузере после запуска, в контроллере предупреждение Cannot resolve MVC view 'hello_world' и
исключение в консоли в логах Tomcat10 java.lang.ClassNotFoundException.
1. Название проекта: Spring1
SDK = openjdk-19
Compiler output: E:\JAVA\Working_directory\Spring1\out
Archetype webapp.
2.Дервево моего проекта: Проект расположен по адресу в ПК: E:\JAVA\Working_directory\Spring1
3. Модули моего проекта:
В модулях Source папка java, папка resources отмечена ка ресурсная.
В модулях добавлено 2 вложенных модуля, т.е. в Модуле Spring1 добавлены:
Spring -> В нем Spring Application context -> applicationContextMVC.xml
Web -> Type = Web Module Deployment Descriptor = E:\JAVA\Working_directory\Spring1\src\main\resources\web.xml и
Web Resource Directory = E:\JAVA\Working_directory\Spring1\src\main\resources
4. Facets:
в нем вижу свои вложенные модули (о которых говорилось в п.3) = Spring -> Spring (Spring1) -> Spring Application context -> applicationContextMVC.xml
и Web (Spring1) -> Web Module Deployment Descriptor = E:\JAVA\Working_directory\Spring1\src\main\resources\web.xml и
Web Resource Directory = E:\JAVA\Working_directory\Spring1\src\main\resources
5. Artifacts:
Spring1:Web exploded = Web Application Exploded
Output directory: E:\JAVA\Working_directory\Spring1\out\artifacts\Spring1_Web_exploded
WEB-INF -> classes -> 'Spring1' module: 'Web' facet classes
'Spring1' module: 'Web' facet resources
По адресу: E:\JAVA\Working_directory\Spring1\out\artifacts создалась папка Spring1_Web_exploded с содержимиым:
МЕТА-INF/MANIFEST.MF
views/hello_world.html
WEB-INF/web.xml
WEB-INF/classes/com (E:\JAVA\Working_directory\Spring1\out\artifacts\Spring1_Web_exploded\WEB-INF\classes\com\test - где test пустая папка)
WEB-INF/classes/views - где views пустая папка
applicationContextMVGxml index.jsp
web∙xml
6. pom.xml
7. Tomcat_10.1.39
8080
C:\apache-tomcat-10.1.39
В Deployment -> Spring1:Web exploded выбран.
URL пробовал:
localhost:8080/hello-world(адрес в URL Tomcat) и
localhost:8080/Spring1/hello-world -
- результат одинаковый 404 ошибка.
8. HelloController.java
package com.test;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("/hello-world")
public String sayHello() {
return "hello_world";
}
}
9. hello_world.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="en">
<head>
<meta charset="ISO-8859-1">
<title>My app</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
10. applicationContextMVC.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.test"/>
<mvc:annotation-driven/>
<bean id="templateResolver" class="org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/views/"/>
<property name="suffix" value=".html"/>
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring6.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver"/>
<property name="enableSpringELCompiler" value="true"/>
</bean>
<bean class="org.thymeleaf.spring6.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine"/>
<property name="order" value="1"/>
<property name="viewNames" value="*"/>
</bean>
</beans>
11. web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>spring-mvc-app1</display-name>
<absolute-ordering/>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/applicationContextMVC.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
Результат:
Сервер Tomcat запускаетя без проблем, НО общий результат запуска выглядит так:
1. По адресу в браузере
localhost:8080/hello-world(адресу в URL Tomcat) или
localhost:8080/Spring1/hello-world
выводится соощбение на экран HTTP Status 404 – Не найдено
2. Предупреждение на странице файла HelloController.java Cannot resolve MVC view 'hello_world'.
3. В файле hello_world.html предупреждение = Namespace declaration is never used
4.Tomcat localhost log: java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
Что я еще делал: Чистил кэш, пересобирал проект, входил выходил из программы, устанавливал последнюю idea,
сносил все проекты, пока что без изменений. Не пробовал правда снести свою 2022.2 идею полностью с очисткой всего.
Сервер успешно запускается.
[2025-03-29 12:57:26,686] Artifact Spring1:Web exploded: Artifact is being deployed, please wait...
[2025-03-29 12:57:27,048] Artifact Spring1:Web exploded: Artifact is deployed successfully
[2025-03-29 12:57:27,048] Artifact Spring1:Web exploded: Deploy took 362 milliseconds