如何修复 Tomcat 部署 8.5.27 上出现的“java.lang.NoClassDefFoundError: javax/management/MBeanServerNotification”问题

问题描述 投票:0回答:1

我在 tomcat 9 服务器上本地部署了我的项目,它工作得很好,但是当我尝试使用 tomcat 8.5.27 在远程部署服务器中执行相同操作时,它会抛出以下错误:

    20-Jul-2019 11:26:43.039 SEVERE [localhost-startStop-27] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
     org.apache.catalina.LifecycleException: Failed to initialize component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Stream]]
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:113)
            at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
            at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
            at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
            at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
            at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
            at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
            at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
            at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
            at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
            at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
            at java.base/java.lang.Thread.run(Thread.java:844)
    Caused by: java.lang.NoClassDefFoundError: javax/management/MBeanServerNotification
            at io.micrometer.core.instrument.binder.tomcat.TomcatMetrics.lambda$registerMetricsEventually$aa4da135$1(TomcatMetrics.java:259)
            at java.management/javax.management.NotificationBroadcasterSupport.sendNotification(NotificationBroadcasterSupport.java:238)
            at java.management/javax.management.MBeanServerDelegate.sendNotification(MBeanServerDelegate.java:211)
            at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.sendNotification(DefaultMBeanServerInterceptor.java:1473)
            at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1867)
            at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:955)
            at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:890)
            at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:320)
            at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
            at org.apache.tomcat.util.modeler.Registry.registerComponent(Registry.java:634)
            at org.apache.catalina.util.LifecycleMBeanBase.register(LifecycleMBeanBase.java:161)
            at org.apache.catalina.util.LifecycleMBeanBase.initInternal(LifecycleMBeanBase.java:61)
            at org.apache.catalina.core.ContainerBase.initInternal(ContainerBase.java:903)
            at org.apache.catalina.core.StandardContext.initInternal(StandardContext.java:6228)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
            ... 11 more

    20-Jul-2019 11:26:43.040 SEVERE [localhost-startStop-27] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive [/home/webadmin/server/apache-tomcat-8.5.27/webapps/Stream.war]
     java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to initialize component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Stream]]
            at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:756)
            at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
            at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
            at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
            at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
            at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
            at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
            at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
            at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
            at java.base/java.lang.Thread.run(Thread.java:844)

我使用java 1.8和springboot版本2.1.2。直到昨天,代码已在远程服务器上部署并正常运行,直到今天我才收到此错误。在我的 Tomcat 9 本地系统上,它仍然可以正常运行。我没有添加到 eclipse 中的构建路径中的其他依赖项。 请告诉我此错误的原因和解决方法。预先感谢。

spring-boot web-deployment tomcat8
1个回答
0
投票

我也遇到了同样的错误

Caused by:java.lang.NoClassDefFoundError: javax/management/MBeanServerNotification

当我在远程主机服务器上部署此应用程序时。应用程序在本地服务器上运行没有错误。两台服务器的操作系统都是Ubuntu 22.04。

我通过以下步骤摆脱了这个错误:

我在远程服务器上重新启动了 Tomcat。
  1. 我在远程服务器上取消部署此应用程序。
  2. 我将其 war 文件移至 /opt/tomcat/latest/webapps 文件夹。
  3. 每次尝试都有效。
  4. 但是,在跳过步骤 1 和 2 时,我总是遇到上述错误。当我在 Tomcat 管理器中按下此应用程序旁边的启动按钮而不执行上述步骤时,我也遇到了该错误。

也许更新或升级 Tomcat 会使上述步骤变得不必要?一些人提到的其他解决方案在这种情况下不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.