web-dev-qa-db-ja.com

[spring_web]という名前のフラグメントが複数見つかりました。これは相対的な順序付けでは合法ではありません

Intelljの組み込みサーバーを使用して実行すると正常に機能するスプリングブートアプリケーションがあります。しかし、.warファイルにパッケージ化してTomcatにデプロイすると、次のエラーが発生します。

    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)  

私のプロジェクトには複数のWebフラグメントが含まれていないため、この問題の原因が何かはわかりません。

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

Springには2つの異なるバージョンがあるようです。依存関係を確認して、別のSpringバージョンへの依存関係があるかどうかを確認してください。

mvn dependency:tree -Dverbose -Dincludes=groupId:artifactId
6

<absolute-ordering />タグのすぐ下のweb.xml<display-name>タグを追加します。うまくいくはずです。

44
Roman Sterlin

このエラーは、プロジェクトの春のフレームワークの更新後に発生するようです。Tomcatwebappsのプロジェクト履歴ファイルをクリアすると、問題が解決する場合があります。

5

この問題は、デプロイメント記述子の絶対順序を追加することで解決されました。

タグ<absolute-ordering/>がweb.xmlに追加されました

参照:

https://www.Oracle.com/technetwork/articles/javaee/javaee6overview-part2-136353.html

4
Pardha Saradhi

absolute-orderingタグをweb.xmlに追加し、display-nameタグのすぐ下で機能するようにします。 -Roman Sterlinのこの回答は私にも役立ちました。

4

Spring 5.1.8とApache Tomcat 8.5バージョンを使用しています。私のweb.xmlファイルで、<absolute-ordering />タグの直後にadd <display-name>を追加しましたが、これはうまくいきました。

3
Pran Sukh

サーバーのクリーニングは私のために働いた。次のようにしてください:

サーバーを右クリックし、[クリーン]をクリックします。

次に、サーバーにアプリを再デプロイします。

2
Lehar Bhandari

私のプロジェクトはSpringbootベースのバージョン(1.5.21.RELEASE)であり、戦争を生成して物理的なTomcatにデプロイします。私は同じ問題を得て、以下のアプローチで解決しました。

解決策:pom.xmlのspring-boot-starter-webからTomcat-embed-websocket依存関係を除外します

<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

私は同じ問題を抱えてそれを解決しました。同様のエラーが発生しましたが、スプリングブートは使用していません。私はJava 8.でSpring 3.xを使用しました。上記のソリューションが機能しない場合は、jarを変更し、それらのjarがJavaバージョンと互換性があるかどうかを検索しますを使用しているかどうか。Spring3.xはJava 8.と互換性がありません。

0
rohan

このエラーは通常、異なるクラスローダー(私の場合は共有クラスローダーとwebappクラスローダー)によって読み込まれる、2つのスプリングコピーがコンテナーにある場合に発生します。

有効なpomを確認してください。スプリングjar /クラスを埋め込んでいるバンドルがある場合は、削除してください。コンテナからバンドルとしてインストールされているものを使用してください。

0
Anuj Panwar