IDEA 構成の Tomcat 起動エラーの問題を解決する

IDEA 構成の Tomcat 起動エラーの問題を解決する

異なるサーブレット パスを構成するときに、次の 2 つのエラーが発生しました。

java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
java.lang.ClassNotFoundException: org.apache.jsp.index_jsp;

最初の質問については、オンラインで多くの情報を検索したところ、Tomcat バージョンの競合が原因である可能性があることがわかりました。catalina のログは次のとおりです。

2018 年 2 月 19 日 08:26:44.175 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log サーバー バージョン: Apache Tomcat/8.5.28
2018 年 2 月 19 日 08:26:44.175 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log サーバー構築: 2018 年 2 月 6 日 23:10:25 UTC
2018 年 2 月 19 日 08:26:44.175 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log サーバー番号: 8.5.28.0
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS 名: Windows 7
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS バージョン: 6.1
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log アーキテクチャ: x86
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java ホーム: C:\Program Files\Java\jdk1.8.0_141\jre
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM バージョン: 1.8.0_141-b15
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM ベンダー: Oracle Corporation
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: F:\apache-tomcat-8.5.28
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: F:\apache-tomcat-8.5.28
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数: -Djava.util.logging.config.file=F:\apache-tomcat-8.5.28\conf\logging.properties
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数: -Djdk.tls.ephemeralDHKeySize=2048
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数: -Dignore.endorsed.dirs=
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数: -Dcatalina.base=F:\apache-tomcat-8.5.28
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数: -Dcatalina.home=F:\apache-tomcat-8.5.28
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数: -Djava.io.tmpdir=F:\apache-tomcat-8.5.28\temp
2018 年 2 月 19 日 08:26:44.191 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR バージョン [1.6.3] を使用して APR ベースの Apache Tomcat ネイティブ ライブラリ [1.2.16] をロードしました。
2018 年 2 月 19 日 08:26:44.206 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR 機能: IPv6 [true]、sendfile [true]、accept フィルター [false]、ランダム [true]。
2018 年 2 月 19 日 08:26:44.206 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL 構成: useAprConnector [false]、useOpenSSL [true]
2018 年 2 月 19 日 08:26:44.830 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL が正常に初期化されました [OpenSSL 1.0.2m 2017 年 11 月 2 日]
2018 年 2 月 19 日 08:26:45.080 INFO [main] org.apache.coyote.AbstractProtocol.init ProtocolHandler ["http-nio-8080"] を初期化しています
2018 年 2 月 19 日 08:26:45.517 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector サーブレットの書き込み/読み取りに共有セレクタを使用する
2018 年 2 月 19 日 08:26:45.581 INFO [main] org.apache.coyote.AbstractProtocol.init ProtocolHandler を初期化しています ["ajp-nio-8009"]
2018 年 2 月 19 日 08:26:45.597 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector サーブレットの書き込み/読み取りに共有セレクタを使用する
2018 年 2 月 19 日 08:26:45.597 INFO [main] org.apache.catalina.startup.Catalina.load 初期化が 2422 ミリ秒で処理されました
2018 年 2 月 19 日 08:26:45.643 INFO [main] org.apache.catalina.core.StandardService.startInternal サービスを開始しています [Catalina]
2018 年 2 月 19 日 08:26:45.643 INFO [main] org.apache.catalina.core.StandardEngine.startInternal サーブレット エンジンを起動しています: Apache Tomcat/8.5.28
2018 年 2 月 19 日 08:26:45.675 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web アプリケーション ディレクトリ [F:\apache-tomcat-8.5.28\webapps\docs] をデプロイしています
2018 年 2 月 19 日 08:26:46.423 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web アプリケーション ディレクトリ [F:\apache-tomcat-8.5.28\webapps\docs] のデプロイメントが [748] ミリ秒で完了しました
2018 年 2 月 19 日 08:26:46.423 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web アプリケーション ディレクトリ [F:\apache-tomcat-8.5.28\webapps\examples] をデプロイしています
2018 年 2 月 19 日 08:26:47.059 重大 [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: 開始:
org.apache.catalina.LifecycleException: コンポーネント [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/examples]] の起動に失敗しました
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) で
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752) で
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) で
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) で
org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1141) にあります
org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1875) で
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) で
java.util.concurrent.FutureTask.run(FutureTask.java:266) で
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) で
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) で
java.lang.Thread.run(Thread.java:748) で
原因: org.apache.catalina.LifecycleException: コンポーネント [Pipeline[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/examples]] の起動に失敗しました
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) で
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5125) で
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) で
... 10件以上
原因: org.apache.catalina.LifecycleException: コンポーネント [org.apache.catalina.authenticator.FormAuthenticator[/examples]] の起動に失敗しました
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) で
org.apache.catalina.core.StandardPipeline.startInternal(StandardPipeline.java:182) で
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) で
... 12件以上
原因: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1186) で
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) で
... 14件以上

2018 年 2 月 19 日 08:26:47.075 重大 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web アプリケーション ディレクトリ [F:\apache-tomcat-8.5.28\webapps\examples] のデプロイ エラー
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: コンポーネント [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/examples]] の起動に失敗しました
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:756) で
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) で
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) で
org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1141) にあります
org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1875) で
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) で
java.util.concurrent.FutureTask.run(FutureTask.java:266) で
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) で
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) で
java.lang.Thread.run(Thread.java:748) で

まず、他の Tomcat バージョンを削除し、Tomcat 環境変数を再構成して、Tomcat を再デプロイしてみました。問題は解決されていないことがわかったので、再度インターネットで検索したところ、getContextPath() は servlet2.5 に固有のものであることがわかりました。したがって、元の jar パッケージ内の servlet-api.jar を削除してから、プロジェクトを再デプロイしてみてください。 2 番目の問題が見つかりました。ログは次のとおりです。

2018 年 2 月 19 日 09:59:51.534 重大 [http-nio-8080-exec-3] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() (サーブレット [jsp] のコンテキスト、パス [/Happy]) が例外 [java.lang.ClassNotFoundException: org.apache.jsp.index_jsp] をスローしました。根本的な原因
java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
java.net.URLClassLoader.findClass(URLClassLoader.java:381) で
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:129) で
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:60) で
org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:159) で
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:171) で
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:380) で
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) で
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) で
javax.servlet.http.HttpServlet.service(HttpServlet.java:847) で
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) で
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) で
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) で
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) で
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) で
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) で
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) で
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) で
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) で
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) で
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) で
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) で
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) で
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) で
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) で
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) で
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) で
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) で
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) で
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) で
java.lang.Thread.run(Thread.java:748) で

2018 年 2 月 19 日 10:03:45.289 重大 [http-nio-8080-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() がパス [/Happy] のコンテキストでサーブレット [jsp] に対して例外 [JSP のクラスをコンパイルできません] をスローしました。根本的な原因は次のとおりです。
java.lang.ClassNotFoundException: com.sun.el.E​​xpressionFactoryImpl
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1291) で
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) で
javax.el.FactoryFinder.newInstance(FactoryFinder.java:83) で
javax.el.FactoryFinder.find(FactoryFinder.java:193) で
javax.el.E​​xpressionFactory.newInstance(ExpressionFactory.java:185) で
javax.el.E​​xpressionFactory.newInstance(ExpressionFactory.java:156) で
org.apache.jasper.compiler.PageInfo.<init>(PageInfo.java:80) で
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:117) で
org.apache.jasper.compiler.Compiler.compile(Compiler.java:374) で
org.apache.jasper.compiler.Compiler.compile(Compiler.java:351) で
org.apache.jasper.compiler.Compiler.compile(Compiler.java:335) で
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:595) で
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368) で
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) で
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) で
javax.servlet.http.HttpServlet.service(HttpServlet.java:847) で
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) で
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) で
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) で
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) で
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) で
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) で
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) で
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) で
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) で
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) で
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) で
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) で
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) で
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) で
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) で
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) で
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) で
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) で
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) で
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) で
java.lang.Thread.run(Thread.java:748) で

情報を再度確認したところ、jar パッケージが欠落していることがわかりました。 jdk1.8 の拡張 jar パッケージにはサーブレット関連の API がないため、IDEA はインポートに失敗します。

この時点で、jarパッケージをインポートする必要があります。以前は、関連するAPIをダウンロードしました

それを以下のディレクトリに置いてください

jar パッケージが見つからないという問題を防ぐには、tomcat ディレクトリの下の lib ディレクトリで servlet-api.jar を直接見つけて、ext に直接コピーすることをお勧めします。その後、Tomcat を再デプロイすると問題は解決します。

要約する

これで、IDEA 構成の Tomcat 起動エラーの問題を解決する方法についての記事は終わりです。より関連性の高い IDEA 構成の Tomcat 起動エラーの内容については、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • SpringBootはWebSocketを統合してフロントエンドとバックエンドのメッセージ伝送方法を実現します
  • Springboot Websocketの簡単な例
  • SpringBootは、ポイントツーポイント(1対1)およびブロードキャスト(1対多)のリアルタイムプッシュのためにWebSocket(純粋なH5ベース)を統合します。
  • SpringBoot webSocketはブロードキャスト送信、ポイントツーポイントメッセージ、Android受信を実装します
  • Tomcat 起動エラー: java.util.zip.ZipException の解決方法
  • CentOS 6.5 での Tomcat 起動エラーの解決策
  • SpringBoot webSocketリソースをロードできず、Tomcat起動エラーが発生する問題を解決します

<<:  MySQL 変数の原理と応用例

>>:  例を通してMySQLの更新がテーブルをロックするかどうかを判定する

推薦する

MySQLの比較演算子正規表現マッチングREGEXPの使用の詳細な説明

1. データを初期化する `test_01` が存在する場合はテーブルを削除します。 テーブル「te...

MySQL テーブルパーティションの使用法と基本原理の詳細な説明

目次パーティションテーブルとはパーティションテーブルの適用シナリオパーティションテーブルの制限パーテ...

Vue+elementUI コンポーネントは、折りたたみ可能な動的レンダリングのマルチレベル サイドバー ナビゲーションを再帰的に実装します。

かなり前に実装された機能ですが、クリックすると選択したメニュー項目の背景色が白くなることに気付きまし...

異なるドメイン名への PC または携帯電話のアクセスを区別するように Nginx を構成する方法

新しい公式サイトはオンラインですが、携帯電話で新しい公式サイトにアクセスすると、エクスペリエンスが非...

MySQL の中国語文字化け問題の解決方法

1. LinuxのMySQLで中国語の文字化けが発生する。以下の操作を実行する。 vi /etc/m...

MySQL外部キーの3つの関係例の詳細な説明

この記事では、例を使用して、MySQL 外部キーの 3 つの関係について説明します。ご参考までに、詳...

CentOS での Django プロジェクトのデプロイに関する詳細なチュートリアル

基本環境パゴダ設置サービスパゴダにインストールされた[Pythonプロジェクトマネージャー]パゴダに...

Dockerコンテナアプリケーションログの表示方法

docker アタッチコマンドdocker attach [options] 容器実行中のコンテナに...

Tomcat のインストール後に起こりうる問題の紹介

1. Tomcatサービスが開いていませんブラウザのアドレスバーにlocalhost:8080と入力...

Linux リモート管理と sshd サービス検証の知識ポイントの詳細な説明

1. SSHリモート管理SSH の定義SSH (Secure Shell) は、主にキャラクタ イン...

Maxwell を使用して MySQL データをリアルタイムで同期する方法

目次マクスウェルについてMaxwellの設定と使用1. Maxwellインストールパッケージをダウン...

MySQL の時間差関数 TIMESTAMPDIFF と DATEDIFF の使用

時間差関数 TIMESTAMPDIFF と DATEDIFF の使用SQL ステートメント、特にスト...

Django+mysql の設定と簡単な操作データベースのサンプルコード

ステップ1: MySQLドライバをダウンロードするcmdは作成されたDjangoプロジェクトディレク...

Nginx における 2 つの現在の制限方法についての簡単な説明

負荷は通常、システム設計時に予測されます。システムがパブリック ネットワークに公開されている場合、悪...

速度、読み込み、Web アプリケーションなどにおける div と table の違い。

1: 速度と読み込み方法の違いdivとtableの違いは速度ではなく、読み込み方法です。速度はネット...