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>
回答1件
あなたの回答
tips
プレビュー