Je suis nouveau sur Spring/Maven et je suis ce tutoriel: Servir du contenu Web avec Spring MVC .
Chaque fois que je lance mvn spring-boot:run
, j'obtiens cette erreur:
Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:run (default-cli) on project gs-serving-web-content: Could not exec Java: Application finished with exit code: 1 ->
J'ai essayé d'ajouter classpath, j'ai essayé d'exécuter mvn install clean spring-boot:run
, j'ai fait beaucoup d'autres choses que les gens ont suggérées sur stackoverflow dans des situations similaires, y ayant passé plus de 8 heures - aucune utilisation.
Voici ma classe principale Application.Java
:
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) throws Exception{
SpringApplication.run(Application.class, args);
}
}
Voici ma classe GreeetingController.Java
:
package hello;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class GreetingController {
@RequestMapping("/greeting")
public String greeting(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}
Voici mon fichier 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 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>gs-serving-web-content</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- Exclusions to allow SpringBoot execute on HCP -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-Tomcat</artifactId>
</exclusion>
<exclusion>
<groupId>org.Apache.Tomcat.embed</groupId>
<artifactId>Tomcat-embed-el</artifactId>
</exclusion>
<exclusion>
<artifactId>logback-classic</artifactId>
<groupId>ch.qos.logback</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<properties>
<Java.version>1.8</Java.version>
<!-- The main class to start by executing Java -jar -->
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>hello.Application</mainClass>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
Voici mon modèle HTML:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
La structure d'un projet est
src/main/Java/hello/pom.xml
src/main/Java/hello/Application.Java
src/main/Java/hello/GreetingController.Java
src/main/resources/templates/greeting.html
J'ai apporté les modifications suivantes pour que mvn clean spring-boot:run
fonctionne:
pom.xml
vers le répertoire racine, ce qui rend la hiérarchie de répertoires suivante:Hiérarchie d'annuaire:
.
├── pom.xml
└── src
└── main
├── Java
│ └── hello
│ ├── Application.Java
│ └── GreetingController.Java
└── resources
└── templates
└── greeting.html
extensions
dans la partie suivante:Partie commentée:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- Exclusions to allow SpringBoot execute on HCP -->
<!--<exclusions>-->
<!--<exclusion>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-Tomcat</artifactId>-->
<!--</exclusion>-->
<!--<exclusion>-->
<!--<groupId>org.Apache.Tomcat.embed</groupId>-->
<!--<artifactId>Tomcat-embed-el</artifactId>-->
<!--</exclusion>-->
<!--<exclusion>-->
<!--<artifactId>logback-classic</artifactId>-->
<!--<groupId>ch.qos.logback</groupId>-->
<!--</exclusion>-->
<!--</exclusions>-->
</dependency>
Il semble que vous vouliez exclure ces dépendances. mvn clean spring-boot:run
va simplement se terminer avec succès si Tomcat intégré est exclu, mais je pense que c'est le comportement correct, car il n'y a pas de conteneur pour déployer l'application. Quoi qu'il en soit, vous pouvez l'essayer et apporter des modifications en fonction de vos besoins.
Parfois, le port peut simplement être déjà utilisé. Assurez-vous de tuer tous les processus Java avant d'exécuter une application.