web-dev-qa-db-fra.com

Plusieurs fragments portant le nom [spring_web] ont été trouvés. Ce n'est pas légal avec un ordre relatif

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>
16
user2054833

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
6
David Simonsbacka

ajouter <absolute-ordering /> tag à votre web.xml juste sous le <display-name> tag. devrait marcher.

44
Roman Sterlin

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.

5
大丈夫没问题

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

4
Pardha Saradhi

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.

4
antara chakraborty

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.

3
Pran Sukh

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.

2
Lehar Bhandari

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>
1
Raghu Reddy

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.

0
rohan

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.

0
Anuj Panwar