Deploy de .war no SpringBoot não funciona. Mostra erro 404

32 respostas Resolvido
V

Bom dia pessoal!

Estou com o seguinte problema, tenho uma aplicação que funciona perfeitamente rodando na minha IDE (Spring Tool Suite) mas ao gerar o arquivo war e subir a aplicação no tom cat ele não funciona, mas apenas erro 404, abri o war e todos os arquivo estão lá, já tem seguir tudo quando e tutorial com problemas semelhantes mas nenhum resolveu. Abaixo mais informações,.

Versão do java na aplicacao 11
Versão do jva no servidor 11
Versão do tomcat no servidor 8.5.55

minha classe principal

package br.com.masterplastfitas;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 
@SpringBootApplication
public class MasterApplication extends SpringBootServletInitializer {
 
    public static void main(String[] args) {
        SpringApplication.run(MasterApplication.class, args);
    }
     
     @Override
      protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
          return builder.sources(MasterApplication.class);
      }
}

meu pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.2</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>masterplast</groupId>
    <artifactId>Master</artifactId>
    <version>2.0</version>
    <packaging>war</packaging>
    <name>Master</name>
    <description>Aplicação web </description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity5</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mindrot</groupId>
            <artifactId>jbcrypt</artifactId>
            <version>0.4</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.0</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> 
                </plugin> -->
        </plugins>
    </build>
</project>

tomcat

32 Respostas

Lucas_Camara

Como o spring-boot vem com um tomcat embarcado, vc deve fazer algumas mudanças para poder rodar o projeto num tomcat externo. Siga os passos desse link: https://www.baeldung.com/spring-boot-war-tomcat-deploy

V

Obrigado Lucas! Pois é eu fiz essa mudanças também mas nao mudou nada, nao da erro na hora de complilar mas quando coloco no tomcat ele so dá erro 404. Tem alguma outra ideia?

Jonathan_Medeiros

Aparentemente o 404 que você está recebendo é do próprio tomcat e não do Spring.

Seu contexto que foi configurado no tomcat é realmente o /master?

V

Oi Janthan, sim é /master, inclusive na ide funciona normal. Já tentei tudo quando é jeito e nada no tomcat

Lucas_Camara

Tente também excluir o tomcat das dependências no pom.xml:

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
      <exclusion>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
      </exclusion>
    </exclusions>
  </dependency>
</dependencies>
V

Esse coloquei pra testar, estava sem, mas mesmo sem da esse erro

Jonathan_Medeiros

Mas na IDE você está rodando direto a aplicação pelo servidor embedded ou você configurou um servidor externo?

V

pelo servidor embutido, estou usando o spring tools suit com o tomcat embutido nele

Jonathan_Medeiros

Então por isso que na IDE funciona, o servidor embedded do Spring é auto configurado e pode ser modificado através dos arquivos de properties.

Algum motivo especial para você estar querendo gerar um artefato como .war e configurar um servidor na mão ao invés de disponibilizar sua aplicação como um .jar e utilizar o embedded tomcat?

V

é que já tem aqui na empresa um servidor com algumas aplicações que rodam em jsp, esse é meu primeiro projeto com spring, ai pensei em colocar junto. essas em jsp fiz usando o netbeans(não me zoa) e funcionaram de primeira.

V

as pliacaoes jsp sao em java 8 com tomcat 8.5, achei que fosse esse o problema já que a aplicacao em spring usa java 11, ai instalei o tomcat 11 mas nao adiantou, mesmo erro.

Jonathan_Medeiros

Se você precisa obrigatoriamente colocar sua aplicação spring junto das demais que são jsp, e é algo relacionado ao seu trabalho, eu recomendaria você trocar uma ideia com as pessoas do seu time para pegar a base de configuração padrão do servidor e configurar sua aplicação spring da mesma forma que o tutorial que o @Lucas_Camara compartilhou.

Agora, se não é obrigatório usar o servidor de aplicação tomcat externo, eu não perderia tempo tentando colocá-lo na mesma estrutura que as demais aplicações jsp estão, utilizaria o próprio servidor embedded mesmo.

V

kkkk, é que as pessoas do meu time sou só eu kkkk, vou tentar gerar o jar com o servidor embedded e logo posto se deu certo.

Jonathan_Medeiros

Bah, saquei, pensei que tinha mais pessoas no time!

Mano, nesse caso, se a decisão é sua e você tem autonomia para tomá-la, eu iria pelo caminho mais simples, de usar o tomcat embedded do spring e já ter essa aplicação totalmente apartada das aplicações legadas.

V

Tem razão Jonathan, passei um trabalho aqui pra desfazer as mudanças que tinha feito em relação ao .war mas estou enfrentando um problema parecido agora, a aplicação .jar executa, mas ao tentar acessar ela da esse erro:

V
package br.com.masterplastfitas.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class RotaIndexController {
	@GetMapping("/")
	public String index() {
		return"/index";
	}
}

essa é a rota do index

Lucas_Camara

O que vc está usando para fazer as telas?

V

html e javascript

V

bootstrap

V

O erro parece ser relacionado ao thymeleaf mas não sei como resolver, pela ide não dá esse erro.

Jonathan_Medeiros

Seu controller está manipulando String pura, se você está utilizando thymeleaf você não deveria trabalhar com ModelAndView?

V

mas nao estou usando thymeleaf, apenas html, bootestrap e javascript, o que me deixa confuso é que na ide tudo funciona. “/index” deveria apontar para o index.html

Jonathan_Medeiros

Mas se você não está usando thymeleaf o erro no console não faz sentido! :confused:

Lucas_Camara

Em qual pasta no projeto vc está colocando suas páginas html?

V

estão na pasta templates (padrão)

V

Pois é, esse é meu primeiro projeto usando spring e to estudando sozinho, pode ser que tenha feito alguma config errada em relacão ao thymeleaf

Lucas_Camara

Vc poderia postar uma dessas páginas pra gente ver?

V

claro, posso enviar o projeto também se precisar

V
<!DOCTYPE html>

<html lang="pt-br" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="https://www.thymeleaf.org"
	xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity3">

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="icon" type="image/png" sizes="96x96" href="assets/img/favicon.png">
	<title>Masterplast Indústria e Comércio de Plásticos Ltda</title>

	<!-- Google Font: Source Sans Pro -->
	<link rel="stylesheet"
		href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
<!-- Font Awesome -->
<link rel="stylesheet" href="plugins/fontawesome-free/css/all.min.css">
	<!-- Theme style -->
	<link rel="stylesheet" href="dist/css/adminlte.css">
	<!-- Daterange picker -->
	<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
	<!-- home -->
	<script type="text/javascript" src="dist/js/home.js"></script>
	<script type="text/javascript" src="dist/js/usuario.js"></script>
	<script type="text/javascript" src="dist/js/notificacao.js"></script>
	<script type="text/javascript" src="dist/js/maquina.js"></script>
	<script type="text/javascript" src="dist/js/moment.js"></script>
	<script type="text/javascript" src="dist/js/links.maquinas.js"></script>
</head>

<body class="hold-transition sidebar-mini layout-fixed">
	<div class="wrapper">

		<!-- Navbar -->
		<nav class="main-header navbar navbar-expand navbar-white navbar-light">
			<!-- Left navbar links -->
			<ul class="navbar-nav" id="linkMaquinasAtivas">
				<!-- preenchido com jquery -->
			</ul>

			<!-- Right navbar links -->
			<ul class="navbar-nav ml-auto">
				<!-- Navbar Search -->
				<li class="nav-item">
					<a class="nav-link" data-widget="navbar-search" href="#" role="button">
						<i class="fa fa-search"></i>
					</a>
					<div class="navbar-search-block">
						<form class="form-inline">
							<div class="input-group input-group-sm">
								<input class="form-control form-control-navbar" type="search" placeholder="Buscar"
									aria-label="Search">
								<div class="input-group-append">
									<button class="btn btn-navbar" type="submit">
										<i class="fa fa-search"></i>
									</button>
									<button class="btn btn-navbar" type="button" data-widget="navbar-search">
										<i class="fa fa-times"></i>
									</button>
								</div>
							</div>
						</form>
					</div>
				</li>

				<!-- Notifications Dropdown Menu -->
				<li class="nav-item dropdown" id="notificacoes">
					<!-- preenchido com jquery -->
				</li>
				<!-- User Dropdown Menu -->
				<li class="nav-item dropdown">
					<a class="nav-link" data-toggle="dropdown" href="#">
						<i class="fa fa-user"></i><span id="user"></span>
					</a>
					<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
						<span class="dropdown-header">Opções</span>
						<div class="dropdown-divider"></div>
						<a href="/master/trocarsenha" class="dropdown-item">
							<i class="fa fa-lock mr-2"></i> Trocar a Senha
						</a>
						<div class="dropdown-divider"></div>
						<a href="#" class="dropdown-item" id="sair">
							<form th:action="@{/logout}" method="post" id="form">
								<i class="fa fa-sign-out mr-2"></i> Sair
							</form>
						</a>
					</div>
				</li>
			</ul>
		</nav>
		<!-- /.navbar -->

		<!-- Main Sidebar Container -->
		<aside class="main-sidebar sidebar-dark-primary elevation-4">
			<!-- Brand Logo -->
			<a href="/master/home" class="brand-link">
				<img src="dist/img/user-medium.png" alt="Masterplast Logo" class="brand-image" style="opacity: .8">
				<span class="brand-text font-weight-light">Masterplast</span>
			</a>

			<!-- Sidebar -->
			<div class="sidebar" id="">

				<!-- SidebarSearch Form -->
				<div class="form-inline">
					<div class="input-group" data-widget="sidebar-search">
						<input class="form-control form-control-sidebar" type="search" placeholder="Buscar"
							aria-label="Search">
						<div class="input-group-append">
							<button class="btn btn-sidebar">
								<i class="fa fa-search fa-fw"></i>
							</button>
						</div>
					</div>
				</div>
				<!-- Sidebar Menu -->
				<nav class="mt-2">
					<ul class="nav nav-pills nav-sidebar flex-column"
						data-widget="treeview" role="menu" data-accordion="false">
						<!-- Add icons to the links using the .nav-icon class
               			with font-awesome or any other icon font library -->
						<li class="nav-header">PRODUÇÃO</li>
						<li class="nav-item"><a href="#" class="nav-link"> <i
								class="nav-icon fa fa-desktop"></i>
								<p>
									Programação <i class="right fa fa-angle-left"></i>
								</p>
						</a>
							<ul class="nav nav-treeview">
								<li class="nav-item"><a href="programar"
									class="nav-link"> <i class="fa fa-shopping-cart nav-icon"></i>
										<p>Por Pedido</p>
								</a></li>
								<li class="nav-item"><a href="sugeridos"
									class="nav-link"> <i class="fa fa-bookmark nav-icon"></i>
										<p>Itens Sugeridos</p>
								</a></li>
								<li class="nav-item"><a href="reservas"
									class="nav-link"> <i class="fa fa-archive nav-icon"></i>
										<p>Reservas</p>
								</a></li>
							</ul></li>
							<li class="nav-item"><a href="#" class="nav-link"> <i
								class="nav-icon fa fa-industry"></i>
								<p>
									Produção <i class="right fa fa-angle-left"></i>
								</p>
						</a>
							<ul class="nav nav-treeview">
								<li class="nav-item"><a href="produzidos"
									class="nav-link"> <i class="fa fa-circle nav-icon"></i>
										<p>Produzidos</p>
								</a></li>
								<li class="nav-item"><a href="conferidos"
									class="nav-link"> <i class="fa fa-check nav-icon"></i>
										<p>Conferidos</p>
								</a></li>
								<li class="nav-item"><a href="lancados"
									class="nav-link"> <i class="fa fa-rocket nav-icon"></i>
										<p>Lancados</p>
								</a></li>
							</ul></li>
						<li class="nav-item"><a href="#" class="nav-link"> <i
								class="nav-icon fa fa-cogs"></i>
								<p>
									Máquinas <i class="fa fa-angle-left right"></i>
								</p>
						</a>
							<ul class="nav nav-treeview" id="menu_lateral_maquinas">
								<!-- preenchido com jquery -->
							</ul></li>
						<li class="nav-header">LOGÍSTICA</li>
						<li class="nav-item"><a href="#" class="nav-link"> <i
								class="nav-icon fa fa-file"></i>
								<p>
									Acompanhamento <i class="fa fa-angle-left right"></i>
								</p>
						</a>
							<ul class="nav nav-treeview">
								<li class="nav-item"><a href="coletas" class="nav-link">
										<i class="fa fa-truck nav-icon"></i>
										<p>Coletas</p>
								</a></li>
							</ul></li>
						<li class="nav-header">MATERIAIS</li>
						<li class="nav-item"><a href="#" class="nav-link"> <i
								class="nav-icon fa fa-file"></i>
								<p>
									Estoque <i class="fa fa-angle-left right"></i>
								</p>
						</a>
							<ul class="nav nav-treeview">
								<li class="nav-item"><a href="saldos" class="nav-link">
										<i class="fa fa-bars nav-icon"></i>
										<p>Saldos</p>
								</a></li>
							</ul></li>
						<li class="nav-header">DIVERSOS</li>
						<li class="nav-item"><a href="#" class="nav-link"> <i
								class="nav-icon fa fa-edit"></i>
								<p>
									Cadastros <i class="fa fa-angle-left right"></i>
								</p>
						</a>
							<ul class="nav nav-treeview">
								<li class="nav-item"><a href="engenharia"
									class="nav-link"> <i class="fa fa-list nav-icon"></i>
										<p>Engenharia</p>
								</a></li>
								<li class="nav-item"><a href="funcionarios"
									class="nav-link"> <i class="fa fa-users nav-icon"></i>
										<p>Funcionários</p>
								</a></li>
								<li class="nav-item"><a href="impressoras"
									class="nav-link"> <i class="fa fa-print nav-icon"></i>
										<p>Impressoras</p>
								</a></li>
								<li class="nav-item"><a href="maquinas"
									class="nav-link"> <i class="fa fa-cogs nav-icon"></i>
										<p>Máquinas</p>
								</a></li>
								<li class="nav-item"><a href="bobinadeiras"
									class="nav-link"> <i class="fa fa-cube nav-icon"></i>
										<p>Bobinadeiras</p>
								</a></li>
								<li class="nav-item"><a href="turnos" class="nav-link">
										<i class="fa fa-calendar nav-icon"></i>
										<p>Turnos</p>
								</a></li>
								<li class="nav-item"><a href="usuarios"
									class="nav-link"> <i class="fa fa-user nav-icon"></i>
										<p>Usuários</p>
								</a></li>
							</ul></li>
					</ul>
				</nav>
				<!-- /.sidebar-menu -->
			</div>
			<!-- /.sidebar -->
		</aside>

		<!-- Content Wrapper. Contains page content -->
		<div class="content-wrapper">
			<!-- Content Header (Page header) -->
			<div class="content-header">
				<div class="container-fluid">
					<div class="row mb-2">
						<div class="col-sm-6">
							<h1 class="m-0">Resumo de hoje</h1>
						</div><!-- /.col -->
					</div><!-- /.row -->
				</div><!-- /.container-fluid -->
			</div>
			<!-- /.content-header -->

			<!-- Main content -->
			<div class="content">
				<div class="container-fluid">
					<div class="row">
						<div class="col-lg-3 col-6">
							<!-- small box -->
							<div class="small-box bg-info">
								<div class="inner">
									<h3 id="nroPedidosGeradosHoje">0</h3>
									<p>Pedidos Gerados Hoje</p>
								</div>
								<div class="icon">
									<i class="ion ion-bag"></i>
								</div>
								<!--<a href="#" class="small-box-footer">Mais detalhes <i
										class="fa fa-arrow-circle-o-right"></i></a>-->
							</div>
						</div>
						<!-- ./col -->
						<div class="col-lg-3 col-6">
							<!-- small box -->
							<div class="small-box bg-info">
								<div class="inner">
									<h3 id="valorVendidoHoje">R$ 0,00</h3>
									<p>Vendido Hoje</p>
								</div>
								<div class="icon">
									<i class="ion ion-stats-bars"></i>
								</div>
								<!--<a href="#" class="small-box-footer">Mais detalhes <i
										class="fa fa-arrow-circle-o-right"></i></a>-->
							</div>
						</div>
						<!-- ./col -->
						<div class="col-lg-3 col-6">
							<!-- small box -->
							<div class="small-box bg-info">
								<div class="inner">
									<h3 id="valorFaturadoHoje"> R$ 0,00</h3>
									<p>Faturado Hoje</p>
								</div>
								<div class="icon">
									<i class="ion ion-person-add"></i>
								</div>
								<!--<a href="#" class="small-box-footer">Mais detalhes <i
										class="fa fa-arrow-circle-o-right"></i></a>-->
							</div>
						</div>
						<!-- ./col -->
						<div class="col-lg-3 col-6">
							<!-- small box -->
							<div class="small-box bg-info">
								<div class="inner">
									<h3 id="valorFaturadoMensal">R$ 0,00</h3>
									<p>Faturado Mensal</p>
								</div>
								<div class="icon">
									<i class="ion ion-pie-graph"></i>
								</div>
								<!--<a href="#" class="small-box-footer">Mais detalhes <i
										class="fa fa-arrow-circle-o-right"></i></a>-->
							</div>
						</div>
						<!-- ./col -->
					</div>
					<!-- /.row -->
					<div class="card">
						<div class="card-header">
							<h3 class="card-title">Vendas recentes</h3>
							<div class="card-tools">
								<input type="date" name="data_pedidos" id="data_pedidos" />
								<button type="button" class="btn btn-primary btn-sm" onclick="listaPedidosPorData()">
									<i class="fa fa-search"></i>
								</button>
								<button type="button" class="btn btn-primary btn-sm" data-card-widget="collapse"
									title="Collapse">
									<i class="fa fa-minus"></i>
								</button>
							</div>
						</div>
						<!-- /.card-header -->
						<div class="card-body p-0">
							<table class="table" id="tabela_pedidos">
								<thead>
									<tr>
										<th>Pedido</th>
										<th>Un</th>
										<th>Cliente</th>
										<th>Vendedor</th>
										<th>Valor</th>
										<th>Data/Hora</th>
										<th>Faturamento</th>
										<th>Produção</th>
										<th>Logística</th>
									</tr>
								</thead>
								<tbody>
									<!--preenche com jquery-->
								</tbody>
							</table>
						</div>
						<!-- /.card-body -->
					</div>
					<!-- /.card -->
				</div><!-- /.container-fluid -->
			</div>
			<!-- /.content -->
		</div>
		<!-- /.content-wrapper -->

		<!-- Main Footer -->
		<footer class="main-footer">
			<!-- To the right -->
			<div class="float-right d-none d-sm-inline">
				Desenvolvido por Vagner Mocelin
			</div>
			<!-- Default to the left -->
			<strong>Copyright &copy; 2003-2022 <a href="https://www.masterplastfitas.com.br">Masterplast</a>.</strong>
			Todos os direitos reservados.
		</footer>
	</div>
	<!-- ./wrapper -->

	<!-- REQUIRED SCRIPTS -->

	<!-- jQuery -->
	<script src="plugins/jquery/jquery.min.js"></script>
	<!-- Bootstrap 4 -->
	<script src="plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
	<!-- AdminLTE App -->
	<script src="dist/js/adminlte.min.js"></script>
	<!-- Tempusdominus Bootstrap 4 -->
	<script src="plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js"></script>
		<!-- Toastr -->
	<script src="plugins/toastr/toastr.min.js"></script>

</body>
<script>
$("#sair").click(function(){
	form.submit();
});
</script>
<script>
$(window).on("load", function() {
	ContarSegundos();
});

function ContarSegundos() {
	carregaNotificacaoesNaoNotificadas();
	nroPedidosGeradosHoje();
	valorVendidoHoje();
	valorFaturadoHoje();
	valorFaturadoMensal();
}
setInterval(ContarSegundos, 10000);
</script>

<div class="modal fade" id="itens">
	<div class="modal-dialog modal-lg">
		<div class="modal-content">
			<div class="modal-header">
				<h4 class="modal-title" id="titulo"></h4>
				<button type="button" class="close" data-dismiss="modal"
					aria-label="Close">
					<span aria-hidden="true">&times;</span>
				</button>
			</div>
			<div class="modal-body">
				<table class="table table-striped" id="tabela_itens">
					<thead>
						<tr>
						<th>Item</th>
							<th>Código</th>
							<th>Descrição</th>
							<th>Quantia</th>
						</tr>
					</thead>
					<tbody>
						<!--preenche com jquery-->
					</tbody>
				</table>
			</div>
			<div class="modal-footer justify-content-between">
				<button type="button" class="btn btn-default" data-dismiss="modal">Fechar</button>
			</div>
		</div>
		<!-- /.modal-content -->
	</div>
	<!-- /.modal-dialog -->
</div>
<!-- /.modal -->
</html>
V

Bem no começo cita o thymeleaf mas como foi gerado pela ide nao mexi, e rodando a aplicacao pela ide funciona perfeito.

V

tentei desativar o thymeleaf no application.properties mas ai ele retorna a string ao inves da pagina com esse nome

V
Solucao aceita

Consegui!

O problema era realmente na rota:
estava assim:

package br.com.masterplastfitas.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class RotaHomeController {
	@GetMapping("/home")
	public String index() {
		return"/home";
	}
}

ficou assim:

package br.com.masterplastfitas.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class RotaHomeController {
	@GetMapping("/home")
	public ModelAndView home() {
		return new ModelAndView("home");
	}
}

Muito obrigado @Jonathan_Medeiros e @Lucas_Camara

Criado 4 de janeiro de 2023
Ultima resposta 5 de jan. de 2023
Respostas 32
Participantes 3