J'ai une application Spring Boot qui fonctionne bien lorsque je l'exécute à l'aide du serveur intégré d'Intellj. Cependant, lorsque je l'empaquette dans un fichier .war et le déploie sur Tomcat, j'obtiens l'erreur suivante:
org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/file-upload-0.0.1-SNAPSHOT]]
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:167)
at
org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:754)
at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:730)
at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:734)
at org.Apache.catalina.startup.HostConfig.deployWAR(HostConfig.Java:985)
at
org.Apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.Java:1857)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:511)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1149)
at
Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:624)
at Java.lang.Thread.run(Thread.Java:748)
Caused by: Java.lang.IllegalArgumentException: More than one fragment with the name [spring_web] was found. This is not legal with relative ordering. See section 8.2.2 2c of the Servlet specification for details. Consider using absolute ordering.
at org.Apache.Tomcat.util.descriptor.web.WebXml.orderWebFragments(WebXml.Java:2200)
at
org.Apache.Tomcat.util.descriptor.web.WebXml.orderWebFragments(WebXml.Java:2159)
at org.Apache.catalina.startup.ContextConfig.webConfig(ContextConfig.Java:1124)
at org.Apache.catalina.startup.ContextConfig.configureStart(ContextConfig.Java:769)
at org.Apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.Java:299)
at org.Apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.Java:94)
at
org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5176)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
... 10 more
21-Jan-2019 01:51:04.709 SEVERE [localhost-startStop-1]
org.Apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive [C:\Users\dennismo\Dev\Projects\Production Prep\file-upload-module\webapps\file-upload-0.0.1-SNAPSHOT.war]
Java.lang.IllegalStateException: ContainerBase.addChild: start: org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/file-upload-0.0.1-SNAPSHOT]]
at
org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:758)
at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:730)
at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:734)
at org.Apache.catalina.startup.HostConfig.deployWAR(HostConfig.Java:985)
at
org.Apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.Java:1857)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:511)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1149)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:624)
at Java.lang.Thread.run(Thread.Java:748)
Mon projet ne contient pas de plusieurs fragments Web, donc je ne sais pas ce qui pourrait causer ce problème.
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from salaryPaymentRequestRepo -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<Java.version>1.8</Java.version>
<akka.version>2.5.17</akka.version>
</properties>
<repositories>
<repository>
<id>default</id>
<url>http://repo.maven.Apache.org/maven2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</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-Tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.univocity</groupId>
<artifactId>univocity-parsers</artifactId>
<version>2.7.6</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>26.0-jre</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.23.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.11.0</version>
</dependency>
<dependency>
<groupId>ma.glasnost.orika</groupId>
<artifactId>orika-core</artifactId>
<version>1.4.2</version><!-- or latest version -->
<exclusions>
<exclusion>
<artifactId>javassist</artifactId>
<groupId>org.javassist</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-actor_2.12</artifactId>
<version>${akka.version}</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-stream_2.12</artifactId>
<version>${akka.version}</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-persistence_2.12</artifactId>
<version>${akka.version}</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-testkit_2.12</artifactId>
<version>${akka.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.Oracle</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.2</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/resources/lib/ojdbc7-12.1.0.jar</systemPath>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
On dirait que vous avez deux versions différentes de Spring, vérifiez vos dépendances pour voir si vous avez une dépendance à une autre version de Spring.
mvn dependency:tree -Dverbose -Dincludes=groupId:artifactId
ajouter <absolute-ordering />
tag à votre web.xml
juste sous le <display-name>
tag. devrait marcher.
Cette erreur semble se produire après la mise à jour du framework de printemps du projet, l'effacement du fichier historique du projet dans Tomcat webapps
peut résoudre le problème.
Ce problème a été résolu en ajoutant un ordre absolu des descripteurs de déploiement.
La balise <absolute-ordering/>
a été ajouté au web.xml
Référence:
https://www.Oracle.com/technetwork/articles/javaee/javaee6overview-part2-136353.html
ajouter un absolute-ordering
tag à votre web.xml juste sous le display-name
tag devrait fonctionner. - Cette réponse de Roman Sterlin a également fonctionné pour moi.
J'utilise la version Spring 5.1.8 et Apache Tomcat 8.5. Dans mon web.xml
fichier j'ai ajouté l'ajout <absolute-ordering />
juste après le <display-name>
tag et cela a fonctionné pour moi.
Le nettoyage du serveur a fonctionné pour moi. Procédez simplement comme suit:
Faites un clic droit sur le serveur -> Nettoyer.
Redéployez ensuite l'application sur le serveur.
Mon projet est une version basée sur Springboot (1.5.21.RELEASE) et générant la guerre et le déploiement dans Tomcat physique. J'avais eu le même problème et je me suis résolu avec l'approche ci-dessous.
Lösung: Exclure la dépendance de Tomcat-embed-websocket de spring-boot-starter-web dans le pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
<exclusions>
**<exclusion>
<groupId>org.Apache.Tomcat.embed</groupId>
<artifactId>Tomcat-embed-websocket</artifactId>
</exclusion>**
</exclusions>
</dependency>
J'ai eu le même problème et je l'ai résolu. Vous avez des erreurs similaires mais vous n'avez pas utilisé la botte de printemps. J'ai utilisé spring 3.x avec Java 8. Si les solutions ci-dessus ne fonctionnent pas, changez les pots et recherchez si ces pots sont compatibles avec la version Java vous que vous utilisez ou non. spring 3.x n'est pas compatible avec Java 8.
Cette erreur vient généralement de cela si nous avons deux copies de spring dans notre conteneur, qui sont chargées par différents chargeurs de classe (dans mon cas, le chargeur de classe partagé et le chargeur de classe webapp).
Vérifiez le pom efficace, si vous avez des pots/classes à ressort à encastrer, si c'est le cas, retirez-le, vous devez utiliser celui installé en tant que paquet du conteneur.