異なるサーブレット パスを構成するときに、次の 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.ExpressionFactoryImpl 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.ExpressionFactory.newInstance(ExpressionFactory.java:185) で javax.el.ExpressionFactory.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起動エラーが発生する問題を解決します
|