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>
Springには2つの異なるバージョンがあるようです。依存関係を確認して、別のSpringバージョンへの依存関係があるかどうかを確認してください。
mvn dependency:tree -Dverbose -Dincludes=groupId:artifactId
<absolute-ordering />
タグのすぐ下のweb.xml
に<display-name>
タグを追加します。うまくいくはずです。
このエラーは、プロジェクトの春のフレームワークの更新後に発生するようです。Tomcatwebapps
のプロジェクト履歴ファイルをクリアすると、問題が解決する場合があります。
この問題は、デプロイメント記述子の絶対順序を追加することで解決されました。
タグ<absolute-ordering/>
がweb.xmlに追加されました
参照:
https://www.Oracle.com/technetwork/articles/javaee/javaee6overview-part2-136353.html
absolute-ordering
タグをweb.xmlに追加し、display-name
タグのすぐ下で機能するようにします。 -Roman Sterlinのこの回答は私にも役立ちました。
Spring 5.1.8とApache Tomcat 8.5バージョンを使用しています。私のweb.xml
ファイルで、<absolute-ordering />
タグの直後にadd <display-name>
を追加しましたが、これはうまくいきました。
サーバーのクリーニングは私のために働いた。次のようにしてください:
サーバーを右クリックし、[クリーン]をクリックします。
次に、サーバーにアプリを再デプロイします。
私のプロジェクトは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>
私は同じ問題を抱えてそれを解決しました。同様のエラーが発生しましたが、スプリングブートは使用していません。私はJava 8.でSpring 3.xを使用しました。上記のソリューションが機能しない場合は、jarを変更し、それらのjarがJavaバージョンと互換性があるかどうかを検索しますを使用しているかどうか。Spring3.xはJava 8.と互換性がありません。
このエラーは通常、異なるクラスローダー(私の場合は共有クラスローダーとwebappクラスローダー)によって読み込まれる、2つのスプリングコピーがコンテナーにある場合に発生します。
有効なpomを確認してください。スプリングjar /クラスを埋め込んでいるバンドルがある場合は、削除してください。コンテナからバンドルとしてインストールされているものを使用してください。