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の更新がテーブルをロックするかどうかを判定する

推薦する

VMware14 に CentOS 7 をインストールするグラフィック チュートリアル

CentOS の紹介CentOS は、Red Hat Linux が提供する無料で利用できるソースコ...

nginx 設定ファイルで環境変数を使用する方法

序文Nginx はパフォーマンスを重視して設計された HTTP サーバーです。Apache や li...

nginx で Vue プロジェクトをデプロイする方法

今日は nginx サーバーを使用するのですが、vue プロジェクトをサーバーにデプロイする必要もあ...

Ubuntu の空き容量を増やす 5 つの簡単な方法

序文ほとんどの人は、システム ディスク ストレージが少ないときにこの操作を実行するか、Linux シ...

Alibaba Cloud ECS クラウド サーバー (Linux システム) は、MySQL をインストールした後にリモートで接続できません (落とし穴)

昨日、1年間使用していた Alibaba Cloud サーバーを購入しました。システムは Linux...

Vue を使用した Amap アプリケーション開発のベスト プラクティス

目次序文非同期読み込みパッケージコンポーネントコンポーネントの使用インターフェースをカスタマイズする...

MySQLコマンドプロンプトで入力エラーが発生したときに前のコマンドを修正する方法

目次現在の問題解決プロセス具体的な手順解決した事件現在の問題MySQL コマンド プロンプトに複数行...

win10 での mysql5.7.21 の詳細なインストール手順

この記事では、MySQL 5.7.21のインストールとインストール中に発生した問題を参考までに紹介し...

CSSの固定位置属性の詳細な説明

モバイル アプリを開発する場合、Web サイトが特定の高さまでスクロールしたときにコンテンツの一部を...

反応自動構築ルーティングの実装

目次順序1. 集中ルーティング2. ファイルディレクトリ3. CompileRouterを作成する4...

VMWare12 グラフィックチュートリアルで Apple Mac OS X をインストールする

1. はじめに:友人はシステム知識を学びたいと考えており、Apple のラップトップを使用していまし...

Linux gccコマンドの具体的な使い方

01. コマンドの概要gcc コマンドは、GNU がリリースした C/C++ ベースのコンパイラを使...

Webデザインチュートリアル(2):模倣と盗作について

<br />前回の記事では、Webデザインの手順と方法を紹介しました。詳細については、前...

js キャンバスは角丸画像を実現します

この記事では、角を丸くするためのjsキャンバスの具体的なコードを参考までに紹介します。具体的な内容は...

html.cssオーバーフローの包括的な理解

html.cssオーバーフローの包括的な理解XML/HTML コードコンテンツをクリップボードにコピ...