Spring Java: erreur

Résolu
Bonjour, j'essaie de travailler avec le framework Spring. Cependant, en voulant executer ce code


package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {

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

@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("Hello %s!", name);
}
}


j'ai cette erreur:


Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.4.5:run (default-cli) on project demo: Application finished with exit co
de: 1 -> [Help 1]


J'ai essayé de chercher une solution, mais je ne vois vraiment pas d'où cela vient. J'ai bien installé Jdk et Jre dans le bon dossier, mais je suis toujours incapable d'executer le code.

Auriez-vous une suggestion à me proposer ?

Cordialement

Configuration: Windows / Firefox 88.0

2 réponses

  1. Modérateur
    Bonjour,

    Le code du web service ne devrait pas être dans la même classe que la méthode main.
    Voir la documentation et les exemples : https://spring.io/guides/gs/actuator-service/
    @SpringBootApplication
    public class DemoApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(DemoApplication.class, args);
    	}
    }

    @RestController
    public class HelloWorldController {
        @GetMapping("/hello")
    	public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
    		return String.format("Hello %s!", name);
    	}
    }
    1. Bonjour et merci pour ton aide.

      J'ai oublié de préciser que j'avais cette erreur avec la commande suivante:
      mvnw spring-boot:run

      sachant que quand je lance cette commande, je suis dans le dossier du projet, qui lui-même se trouve dans jre.

      J'ai essayé de lancé cette commande dans le dossier du projet lorsqu'il est dans le répertoire jdk, mais du coup j'ai l'erreur suivante:
      Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on project demo: Cannot create resour
      ce output directory: C:\Program Files\Java\jdk-16.0.1\demo\target\classes -> [Help 1]


      j'ai essayé d'aller voir les options du compilateur, mais je n'ai rien vu de pertinent
      1. Modérateur
        Bonjour,

        "dans le dossier du projet, qui lui-même se trouve dans jre"
        Il ne faut jamais travailler dans le dossier du JRE ou du JDK tu risquerais de corrompre Java et impacter tous les programmes, pas seulement celui que tu exécutes.

        Il faut que tu ajoutes des variables d'environnement :
        • JAVA_HOME avec le répertoire d'installation du JDK
        • MAVEN_HOME avec le répertoire d'installation de Maven

        Puis modifier (ou créer) la variable d'environnement PATH pour ajouter %JAVA_HOME%\bin et %MAVEN_HOME%\bin
        Plus d'informations sur https://java.com/fr/download/help/path_fr.html

        En ligne de commande tu peux vérifier que c'est bien configuré avec javac -version et mvn --version

        Avec ça tu pourras donc déplacer ton code dans n'importe quel répertoire où tu as des droits d'écriture et utiliser les commandes Java et Maven sans problème
      2. @KXOk, en fait pour la variable d'environnement JAVA_HOME, j'avais mis le path vers jre, et non jdk, et je n'avais tout simplement pas créé la variable MAVEN_HOME...
        Tout fonctionne, merci à toi :)
      3. @charline159Edit: j'ai dû également aller dans le fichier pom.xml pour indiquer la bonne version de java :
        <java.version>16</java.version>


        et j'ai également dû utiliser un autre port (le 9090) au lieu du 8080 qui était déjà utilisé par un autre service!

        Bref, merci !

        Par contre, dès que je modifie un petit truc (par exemple, le texte à afficher sur une page), je dois arrêter le serveur puis le relancer, sinon la modification n'a pas été prise en compte. C'est normal ?
      4. @KXOui apparemment je dois ajouter

        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
        </dependency>

        mais spring-boot-devtools n'est pas reconnu.
        Je vais aller voir comment régler ça.

        Merci pour ton aide encore :)