【问题标题】:Tomcat start and stop : java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader()Ljava/lang/ClassLoaderTomcat 启动和停止:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader()Ljava/lang/ClassLoader
【发布时间】:2021-04-12 10:38:18
【问题描述】:

当我像“start catalina”一样从 cmd 启动 tomcat 时,会打开另一个 cmd 终端,然后出现下面给出的错误。如何解决这个问题?

... SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1069)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1719)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader()Ljava/lang/ClassLoader;
        at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:210)
        at org.apache.catalina.startup.ContextConfig.processJarsForWebFragments(ContextConfig.java:1855)
        at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1119)
        at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:771)
        at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5095)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 10 more

【问题讨论】:

  • 它是一个裸tomcat安装还是你有什么部署?我记得有 NoSuchMethodErrors 使用 servlet 规范部署了一个 web 应用程序,而不是支持的。自从我上次接触 Tomcat 以来已经有好几年了,但第 8 版似乎并不是非常“新”
  • @BigMike 我会部署一些项目,但我还没有部署;我不确定,但如果没有误认为 Tomcat Home 中不存在 server/src/shared 文件夹和应用程序文件,则它不是裸 Tomcat 安装。即使 localhost:8080 在应用“catalina start”或运行后也无法打开 Tomcat 欢迎页面
  • 那么我唯一能想到的就是你使用了一个太新/旧的 JVM,或者你的类路径中有一些 jar 用于不同的 servlet 版本。你用的是哪个jvm?
  • Java SE 运行时环境 = 1.8.0_201 JDK = 1.8.0_181,servlet 是:servlet-api, javax.servlet-3.0 @BigMike

标签: java tomcat tomcat8 catalina


【解决方案1】:

java.lang.NoSucMethodError 当 Java 代码尝试调用类中不存在的方法时出现,这可能是静态或非静态方法。

也许您的问题的解决方案就在这里

java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String

javax.servlet.ServletContext.getContextPath()Ljava/lang/String

【讨论】:

    相关资源