質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

IntelliJ IDEA

IntelliJ IDEA(インテリジェイ アイディア)は、JetBrains社が開発した、 JavaやScalaなどで利用される統合開発環境です。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

1545閲覧

IntelliJ IDEAのSpringBootアプリをkotlinにて作成してwarとして出力したものがCentOS7上でtomcat配備に失敗する

isao

総合スコア21

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

IntelliJ IDEA

IntelliJ IDEA(インテリジェイ アイディア)は、JetBrains社が開発した、 JavaやScalaなどで利用される統合開発環境です。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2019/10/11 15:23

編集2019/10/11 23:54

IntelliJ IDEA ultimate2019.2使用しています。
下記の手順でwar出力前提のSpringBootk(kotlin)開発環境を構築しました。

1.ファイル>新規>プロジェクトを選択。
2.新規プロジェクト作成ウィザードにて
プロジェクトSDKにopenJDK1.8、言語をkotlin、
javaバージョンを8、パッケージングをwarに設定。
3.依存関係選択画面にてSpring Boot DevTools、Lombok、
Spring Web、Thymeleafを選択。

上記手順にて作成したプロジェクトにて下記のエンドポイントを追加。

kotlin

1package com.example.demo 2 3import org.springframework.web.bind.annotation.GetMapping 4import org.springframework.web.bind.annotation.RequestParam 5import org.springframework.web.bind.annotation.RestController 6import org.springframework.web.bind.annotation.RequestMapping 7 8@RestController 9class TomcatController { 10 @RequestMapping("/") 11 fun index(): String { 12 return "Hello from Spring Starter Project(WAR)!" 13 } 14 @GetMapping("/hello") 15 fun hello(@RequestParam("name") name: String):String="tt Hello!,$name" 16}

IDEAのメニューから「実行」を選択して起動させ
http://localhost:8080/にアクセスして動作を確認。
※ここまでは想定通りでした。

その後、下記手順にてwarファイルを出力。

1.ビルド>成果物のビルド>demo:war>build
2.当該プロジェクトフォルダ配下のtargetフォルダに出力されたwarファイルを取得。
3.Tomcat Webアプリケーションマネージャにて手順2のwarファイルを指定して配備。

以上の手順を行ったところアプリケーションマネージャでの表示上は
一覧に追加され配備されたものの起動ボタンを押下しても起動は出来ませんでした。
※起動を押下すると下記のメッセージが表示されます。

FAIL - コンテキストパス /demo6 のアプリケーションが起動できません FAIL - 例外 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/demo6]] が発生しました

また、配備先のtomcatのログとしては
/var/log/tomcat/catalina.2019-10-12.logに下記のようなエラーメッセージが出力されており
.BeanCreationExceptionによるLifecycleExceptionが起きた事により配備中にエラーが起きたとのことですが
同様の現象を検索エンジンで探して対処法を探していますが見つからない状況です。

見落としている手順や設定などについてご指摘いただけますと幸いです。
宜しくお願い致します。

10 12, 2019 12:15:58 午前 org.apache.catalina.startup.HostConfig deployWAR 情報: Webアプリケーションアーカイブ /var/lib/tomcat/webapps/demo6.war を配備します 10 12, 2019 12:15:58 午前 org.apache.catalina.startup.TldConfig execute 情報: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 10 12, 2019 12:16:01 午前 org.apache.catalina.core.ContainerBase addChildInternal 重大: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/demo6]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) (中略) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultValidator' defined in class path resource [org/springframework/boot/autoconfigure/validation/ValidationAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean]: Factory method 'defaultValidator' threw exception; nested exception is java.lang.NoClassDefFoundError: javax/el/ELManager at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627) (中略) at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:172) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5623) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) ... 44 more Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean]: Factory method 'defaultValidator' threw exception; nested exception is java.lang.NoClassDefFoundError: javax/el/ELManager at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) ... 66 more Caused by: java.lang.NoClassDefFoundError: javax/el/ELManager at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.buildExpressionFactory(ResourceBundleMessageInterpolator.java:88) (中略) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ... 67 more 10 12, 2019 12:16:01 午前 org.apache.catalina.startup.HostConfig deployWAR 重大: Webアプリケーションアーカイブ /var/lib/tomcat/webapps/demo6.war を配備中のエラーです java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/demo6]] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:903) (中略) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) 10 12, 2019 12:16:01 午前 org.apache.catalina.startup.HostConfig deployWAR 情報: Deployment of web application archive /var/lib/tomcat/webapps/demo6.war has finished in 3,143 ms

配備先の環境については下記の通りとなります。

[root@db1 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@db1 ~]# java -version openjdk version "1.8.0_222" OpenJDK Runtime Environment (build 1.8.0_222-b10) OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode) [root@db1 ~]# yum list installed | grep tomcat tomcat.noarch 7.0.76-9.el7_6 @base tomcat-admin-webapps.noarch 7.0.76-9.el7_6 @base tomcat-el-2.2-api.noarch 7.0.76-9.el7_6 @base tomcat-jsp-2.2-api.noarch 7.0.76-9.el7_6 @base tomcat-lib.noarch 7.0.76-9.el7_6 @base tomcat-servlet-3.0-api.noarch 7.0.76-9.el7_6 @base tomcat-webapps.noarch 7.0.76-9.el7_6 @base

ビルドツールはMavenで
以下はpom.xmlの内容となります。

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.9.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>demo5</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <kotlin.version>1.2.71</kotlin.version> </properties> <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>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-kotlin</artifactId> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-reflect</artifactId> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib-jdk8</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>${artifactId}</finalName> <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory> <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <configuration> <args> <arg>-Xjsr305=strict</arg> </args> <compilerPlugins> <plugin>spring</plugin> </compilerPlugins> </configuration> <dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-allopen</artifactId> <version>${kotlin.version}</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rubytomato

2019/10/11 17:07

ビルドツールはGradle、Mavenのどちらでしょうか? それと差支えなければbuild.gradle or pom.xmlの内容を質問内容に追記をお願いします。
isao

2019/10/11 23:57

ありがとうございます。 説明文の文字数制限に引っかかったため追記した文字数分、 エラーメッセージのスタックトレース部分を削ってしまいましたが ビルドツールとpom.xmxについて記載しました。
guest

回答1

0

ベストアンサー

pom.xmlの追記ありがとうございます。

Spring Boot 2.1.9を使用されているということですが、下記のページをみると

System Requirements

Spring Boot 2.1.9は、Tomcat 9 (Servlet version 4.0)をサポートしています。
さらに欄外で補足されているように、Servlet 3.1以上であればSpring Bootアプリケーションを実行させることができるようです。

You can also deploy Spring Boot applications to any Servlet 3.1+ compatible container.

なので、Servlet 3.0のTomcat 7はサポート対象外なのではないかと思います。

Apache Tomcat 7

  • Servlet 3.0 Specification and Javadoc
  • JSP 2.2 and EL 2.2 Specifications, JSP 2.2 Javadoc (note it is labelled as JSP 2.1), EL 2.2 Javadoc

Apache Tomcat 8

  • Servlet 3.1 Specification and Javadoc
  • JSP 2.3 Specification and Javadoc
  • EL 3.0 Specification and Javadoc

試しに提示頂いたpom.xmlを使って似たようなサンプルプロジェクトを作成し、ビルドしたwarファイルをローカル上のTomcat 9にデプロイしたところ、特に問題なく起動、実行することができました。

一度、ローカルPC上にTomcat 9 or Tomcat 8.5をインストールしてwarファイルをビルドしてみてください。

投稿2019/10/12 02:10

rubytomato

総合スコア1752

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

isao

2019/10/12 04:51

サーバ構築時になんとなくyumで入れていたこともあり tomcatのバージョンについては全く疑っておりませんでした。 ご指摘に従い、tomcat9をインストールして同様の手順を試したところ問題なく動作しました。 この度はご指摘、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問