2016-09-26 6 views
0

私はSpring Bootを使ってシステムを構築しています。私はIDEとしてSpring Tools Suiteを使用しています。Spring Tool Suiteを使用してSpring Boot Appとしてプログラムをビルドしても問題なく実行できます。しかし、 "mvn package"コマンドでmaven経由でビルドし、target/my-app.jarの下に生成されたjarファイルを実行すると、埋め込まれたtomcatが起動できませんでした。エラーは次のようになります。Spring Boot Embeded Tomcatを起動できませんでした

org.springframework.context.ApplicationContextException:組み込みコンテナを開始できません。入れ子にされた例外はorg.springframework.boot.context.embedded.EmbeddedServletContainerExceptionです:組み込みのTomcatを開始できません org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:137)〜[spring-boot-1.4。 [SpringContext.jar!/:1.4.0.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:535)〜[spring-context-4.3.2.RELEASE.jar!/: 4.3.2.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)〜[spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)[spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] at org.springframework.boot.SpringApplication.refreshContext (S pringApplication.java:369)[spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:313)[spring-boot- 1.4.0.RELEASE.jar!/:1.4.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1185)[spring-boot-1.4.0.RELEASE.jar!/:1.4 .0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1174)[spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] at com.jdescript。 JdeScriptApplication.main(JdeScriptApplication.java:23)[classes!/:0.0.1] sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)〜[na:1.8.0_91] at sun.reflect.NativeMethodAccessorImpl.invoke NativeMethodAccessorImpl.java:62)〜[na:1.8.0_91] at sun.reflect.DelegatingMethodAccessorImp l.invoke(DelegatingMethodAccessorImpl.java:43)〜[na:1.8.0_91] at java.lang.reflect.Method.invoke(Method.java:498)〜[na:1.8.0_91] at org.springframework。 boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)[jde-script-0.0.1.jar:0.0.1] at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)[ jde-script-0.0.1.jar:0.0.1] at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)[jde-script-0.0.1.jar:0.0.1] org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:525)[jde-script-0.0.1.jar:0.0.1] によって発生しました:org.springframework.boot.context.embedded.EmbeddedServletContainerException:埋め込まれたTomcatを開始できません at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initiali ze(TomcatEmbeddedServletContainer.java:116)〜[spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer。(TomcatEmbeddedServletContainer.java :83)〜[spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:530)〜 [spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:176)〜[spring-boot -1.4.0.RELEASE.jar!/:1.4.0.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:164)〜[spring-boot-1。 4.0.RELEASE.jar!/:1.4.0.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:134)〜[spring-boot-1.4.0.RELEASE.jar! /:1.4。[リリース] ... 16の共通フレームが省略されました 原因:org.apache.catalina.LifecycleException:コンポーネント[StandardServer [-1]]の開始に失敗しました at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java :158)〜[tomcat-embed-core-8.5.4.jar!/:8.5.4] at org.apache.catalina.startup.Tomcat.start(Tomcat.java:356)〜[Tomcat-embed-core (TomcatEmbeddedServletContainer.java:97)〜[spring-boot-1.4.0.RELEASE.jar] !/:1.4.0.RELEASE] ... 21コモンフレームが省略されました 原因:org.apache.catalina.LifecycleException:コンポーネントの開始に失敗しました[StandardService [Tomcat]] at org.apache.catalina.util.LifecycleBase .start(LifecycleBase.java:158) )〜[tomcat-embed-core-8.5.4.jar!/:8.5.4] at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:791)〜[Tomcat-embed-core-8.5 .4jar!/:8.5.4] をorg.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)〜[Tomcat-embed-core-8.5.4.jar!/:8.5.4 org.apache.catalina.LifecycleException:] ... 23共通フレームに起因 を省略成分[StandardEngineで[Tomcatの] org.apache.catalina.util.LifecycleBase.startで (LifecycleBase.java:158を開始できませんでした)〜[tomcat-embed-core-8.5.4.jar!/:8.5.4] at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)〜[Tomcat-embed-core-8.5 .4jar!/:8.5.4] をorg.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)〜[Tomcat-embed-core-8.5.4.jar!/:8.5.4 ] ... 25個の共通フレームが省略されました 原因:org.apache.catalina.LifecycleException:開始時に子コンテナが失敗しました at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)〜[tomcat-組み込みコア8.5.4.jar!/:8.5.4] at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)〜[Tomcat-embed-core-8.5.4.jar! /:8.5.4] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)〜[Tomcat-embed-core-8.5.4.jar!/:8.5.4] ...

:27の一般的なフレームは、私のpom.xmlは以下のように見える

を省略しました

ご意見をいただければ幸いです!

+0

依存関係を削除して、原因を突き止めることができます。 – mm759

+1

'spring-boot-starter-tomcat'の' runtime'スコープ形式を削除します。 –

+0

以前のログ出力で、なぜ起動に失敗したのかが分かるはずです –

答えて

0

コメントで示唆されたようにDeinum。

Tomcatの依存関係スコープを「実行時」として指定しているため、jarには埋め込みのTomcatの依存関係はありません。既定で "コンパイル"スコープを有効にするスコープ宣言を削除します。あなたのjarには、埋め込まれたtomcatコンテナの起動に必要な依存関係が含まれているはずです。

+0

私は試みましたが、それは何の違いもありませんでした。 – user1670498

+0

@ Ameen.M spring-boot-starter-webアーティファクトには、サーブレットコンテキストの埋め込みTomcat依存関係が既に含まれています。 –

+0

私はspring-boot-starter-webに既に含まれていることに同意します。しかし、pomファイルで明示的に宣言されている場合、それはスプリングブートスターターウェブ内のものよりも優先されます。 OPによってポストされたスニペットは明示的に宣言されています。私は「風通しの依存関係の宣言全体を削除する」と言えることに同意します。それを指摘してくれてありがとう。 –

1

私はこれを理解しました。私のシステムは第三者のエンタープライズシステムとやりとりし、私のシステムはサードパーティのシステムからのいくつかのJARファイルに依存します。だから "-Dloader.path"はサードパーティのJARファイルのディレクトリを指しています。 JARファイルの1つj2ee.jarがtomcatと競合します。 "-Dloader.path"からj2ee.jarファイルを削除すると、Tomcatが起動します。

とにかく、ありがとうございました。

+0

この情報を共有していただきありがとうございます。 –

関連する問題