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

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

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

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Tomcat

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

Apache Tomcat

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

受付中

MavenでLog4jを利用しようとするとTomcatが起動できない

Linkey
Linkey

総合スコア77

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Tomcat

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

Apache Tomcat

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

0回答

0評価

0クリップ

371閲覧

投稿2022/01/17 14:36

編集2022/01/17 14:37

javaを勉強しているものです。EclipseでMavenプロジェクトを作成しサーブレットクラスを実装しました。
そのサーブレットのクラスでログ出力処理を実装して動作確認をしようとしたところTomcatの起動に失敗してしまいます。
イメージ説明

Tomcatのログは以下のような出力で、エラー原因が特定できませんでした。

情報: CATALINA_BASE: C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1 [月 1月 17 23:17:28 JST 2022] 情報: CATALINA_HOME: C:\Program Files\tomcat8 [月 1月 17 23:17:28 JST 2022] (中略) 情報: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: XXX 情報: Initializing ProtocolHandler ["http-nio-8080"] [月 1月 17 23:17:28 JST 2022] 情報: Using a shared selector for servlet write/read [月 1月 17 23:17:29 JST 2022] 情報: Initializing ProtocolHandler ["ajp-nio-8009"] [月 1月 17 23:17:29 JST 2022] 重大: Failed to initialize end point associated with ProtocolHandler ["ajp-nio-8009"] [月 1月 17 23:17:29 JST 2022] 重大: Failed to initialize connector [Connector[AJP/1.3-8009]] [月 1月 17 23:17:29 JST 2022] 情報: Initialization processed in 551 ms [月 1月 17 23:17:29 JST 2022] 情報: サービス Catalina を起動します [月 1月 17 23:17:29 JST 2022] 情報: Starting Servlet Engine: Apache Tomcat/8.0.36 [月 1月 17 23:17:29 JST 2022] 情報: Unknown loader jdk.internal.loader.ClassLoaders$AppClassLoader@6d06d69c class jdk.internal.loader.ClassLoaders$AppClassLoader [月 1月 17 23:17:29 JST 2022] 情報: Unknown loader jdk.internal.loader.ClassLoaders$AppClassLoader@6d06d69c class jdk.internal.loader.ClassLoaders$AppClassLoader [月 1月 17 23:17:29 JST 2022] 重大: A child container failed during start [月 1月 17 23:17:29 JST 2022] 重大: A child container failed during start [月 1月 17 23:17:29 JST 2022] 重大: The required Server component failed to start so Tomcat is unable to start. [月 1月 17 23:17:29 JST 2022] 情報: Pausing ProtocolHandler ["http-nio-8080"] [月 1月 17 23:17:29 JST 2022] 情報: Pausing ProtocolHandler ["ajp-nio-8009"] [月 1月 17 23:17:29 JST 2022] 情報: サービス Catalina を停止します [月 1月 17 23:17:29 JST 2022] 情報: Destroying ProtocolHandler ["http-nio-8080"] [月 1月 17 23:17:29 JST 2022] 重大: Failed to destroy end point associated with ProtocolHandler ["http-nio-8080"] [月 1月 17 23:17:29 JST 2022] 情報: Stopping ProtocolHandler ["ajp-nio-8009"] [月 1月 17 23:17:29 JST 2022] 情報: Destroying ProtocolHandler ["ajp-nio-8009"] [月 1月 17 23:17:29 JST 2022] WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.catalina.loader.WebappClassLoaderBase (file:/C:/Program%20Files/tomcat8/lib/catalina.jar) to field java.lang.Thread.threadLocals WARNING: Please consider reporting this to the maintainers of org.apache.catalina.loader.WebappClassLoaderBase WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release

プロジェクトの状態は以下の通りです。
サーブレットクラス
/sample/src/main/java/com/servlet/Path1Servlet.java

java

package com.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Servlet implementation class Path1Servlet */ public class Path1Servlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final Logger logger = LoggerFactory.getLogger(Path1Servlet.class); /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { logger.info("Start"); response.getWriter().append("Served at: ").append(request.getContextPath()); } }

/sample/src/main/resources/log4j2.xml

xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE project> <Configuration> <Properties> <Property name="format1">%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-6p %c{10} %m%n</Property> <Property name="logfile">/hoge/log/app.log</Property> <Property name="logfile-archive">/hoge/log/testlog_%d{yyyy-MM-dd}-%i.log</Property> </Properties> <Appenders> <!-- コンソールに出力する設定 --> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> </Console> <!-- ファイルに出力する設定 --> <RollingFile name="logfile001" append="true" fileName="${logfile}" filePattern="${logfile-archive}"> <PatternLayout> <pattern>${format1}</pattern> </PatternLayout> <Policies> <!-- 1kBに達したらローテーションのファイルを作成する --> <SizeBasedTriggeringPolicy size="1KB"/> </Policies> <DefaultRolloverStrategy max="3"/> </RollingFile> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="STDOUT" /> <AppenderRef ref="logfile001" /> </Root> </Loggers> </Configuration>

web.xml
/sample/src/main/webapp/WEB-INF/web.xml

xml

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>Path1Servlet</servlet-name> <display-name>Path1Servlet</display-name> <description></description> <servlet-class>com.servlet.Path1Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Path1Servlet</servlet-name> <url-pattern>/api/users/path1</url-pattern> </servlet-mapping> </web-app>

/com/pom.xml

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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>sample3</groupId> <artifactId>com</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>com Maven Webapp</name> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>15</maven.compiler.source> <maven.compiler.target>15</maven.compiler.target> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.10</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.33</version> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.33</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api/4.0.1 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>sample</finalName> <pluginManagement> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> </plugins> </pluginManagement> </build> </project>

TomcatV8.0のサーバー追加した後に/com/src/main/webapp/index.jspを右クリック→実行→サーバーで実行と選択するとエラーになります。
Path1Servlet.javaの以下をコメントアウトすると起動が成功しindex.jspにアクセスができます。

java

private static final Logger logger = LoggerFactory.getLogger(Path1Servlet.class); logger.info("Start");

Tomcatサーバーで実行するときに引数は以下のような設定となっています。

-Dcatalina.base="C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1" -Dcatalina.home="C:\Program Files\tomcat8" -Dwtp.deploy="C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps"

Tomcat8のserver.xmlやweb.xmlは手を入れておらずデフォルトのままです。
Tomcat8でLog4jを利用するには何かほかに設定が必要なのでしょうか?
tomcatとlog4jの競合、起動できない等のキーワードで解決方法を探していますが、未だに見つかりません。
Tomcatに詳しい方、MavenプロジェクトでWebアプリケーションを作成されたことのある方がいましたら
ご回答いただけないでしょうか?よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Tomcat

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

Apache Tomcat

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