Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Problema na hora de rodar o Spring

Fui acompanhando a aula e tentando desenvolver o meu projetinho aqui, consegui criar e abrir a página na internet. Aí o problema começou...

Na hora de escrever o "Hello, world!" e criar o "HelloController", não consegui inserir os inputs. Criei uma nova classe, que não ficou de jeito nenhum dentro do .forum e dentro dessa classe criei o doc "HelloController". Mesmo escrevendo a mão, eles não são reconhecidos nem os @RequestMapping("/"); @ResponseBody;

Ele está assim:

package br.com.alura.forum.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.anotation.RequestMapping;
import org.springframework.web.bind.anotation.ResponseBody;

@Controller
public class HelloController {

    @RequestMapping("/");
    @ResponseBody;
    public String hello() {
        return "Hello, world";
    }
}    

Os erros apresentados são esses aqui: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Alguém sabe onde estou errando?!

9 respostas

Oi Luis,

Posta aqui o seu arquivo pom.xml e também manda um print da estrutura de diretorios do seu projeto.

Esse é o pom.xlm

<?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.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>br.com.alura</groupId>
    <artifactId>forum</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>forum</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Talvez tenha sido erro do Maven ao baixar as dependências do projeto.

Apaga a pasta do maven(pasta oculta .m2) do seu computador, e depois no Eclipse clica com o botão direito no projeto e vai em: Maven -> Update Project para ele tentar baixar novamente.

solução!

Outra coisa, você digitou os imports manualmente e eles estão incorretos.

Apaga esses imports e usa o atalho Ctrl + Shift + o para o Eclipse fazer os imports automaticamente

O correto deveria ser:

import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;

Não consegui achar essa pasta oculta da Maven, mas apaguei a pasta antiga e criei outra nova da HelloController e o resultado foi outro, completamente diferente.

O sistema já reconheceu os inputs e não apresenta mais erro dentro da pasta. Só que na hora que vou rodar a primeira aplicação ele dá esse erro aqui:


java.lang.IllegalArgumentException: No auto-configuration attributes found. Is br.com.alura.forum.controller.HelloController annotated with EnableAutoConfiguration?
    at org.springframework.util.Assert.notNull(Assert.java:219) ~[spring-core-5.3.23.jar:5.3.23]
    at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAttributes(AutoConfigurationImportSelector.java:157) ~[spring-boot-autoconfigure-2.7.5.jar:2.7.5]
    at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAutoConfigurationEntry(AutoConfigurationImportSelector.java:124) ~[spring-boot-autoconfigure-2.7.5.jar:2.7.5]
    at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process(AutoConfigurationImportSelector.java:440) ~[spring-boot-autoconfigure-2.7.5.jar:2.7.5]
    at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGrouping.getImports(ConfigurationClassParser.java:879) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.processGroupImports(ConfigurationClassParser.java:809) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorHandler.process(ConfigurationClassParser.java:780) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:192) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.5.jar:2.7.5]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) ~[spring-boot-2.7.5.jar:2.7.5]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.5.jar:2.7.5]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-2.7.5.jar:2.7.5]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.7.5.jar:2.7.5]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-2.7.5.jar:2.7.5]
    at br.com.alura.forum.ForumApplication.main(ForumApplication.java:10) ~[classes/:na]

Posta aqui o código das suas classes ForumApplication e HelloController

ForumApplication

package br.com.alura.forum;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ForumApplication {

    public static void main(String[] args) {
        SpringApplication.run(ForumApplication.class, args);
    }

}

HelloController

package br.com.alura.forum.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import br.com.alura.forum.ForumApplication;

@Controller 
public class HelloController extends ForumApplication {

    @RequestMapping("/")
    @ResponseBody
    public String hello() {
        return "Hello, everybody!";
    }
}

A classe HelloController não deve herdar da classe ForumApplication.

Deu certo!! Muito obrigado!

Mas sobre ele herdar a classe, ela já veio assim quando eu criei a nova função