本文介绍: 写这篇文章时是 2023-02-07,先说环境:JDK和Tomcat都是下载的最新的(修订号),恰恰是因为这个原因导致启动失败,堆栈如下:错误的原因是JDK使用cgroupv2来调用资源限制功能,但Linux内核4.5才支持cgroupv2,导致了错误的发生。我感觉这是jdk的bug,没有正确的判断出系统使用的是cgroupv1还是cgroupv2jdk换成1.8.0_351就好了,不一定是这个版本,去到jdk.internal.platform.Metrics里面使用的是cgroupv1就可以用
JDK和Tomcat都是下载的最新的(修订号),恰恰是因为这个原因导致启动失败,堆栈如下:
07-Feb-2023 22:40:18.345 严重 [main] org.apache.tomcat.util.digester.Digester.startElement Begin event threw error
java.lang.InternalError: java.lang.reflect.InvocationTargetException
at jdk.internal.platform.Metrics.systemMetrics(Metrics.java:67)
at jdk.internal.platform.Container.metrics(Container.java:42)
at sun.management.OperatingSystemImpl.<init>(OperatingSystemImpl.java:181)
at sun.management.ManagementFactoryHelper.getOperatingSystemMXBean(ManagementFactoryHelper.java:106)
at java.lang.management.PlatformComponent$7.getMXBeans(PlatformComponent.java:157)
at java.lang.management.PlatformComponent.getMXBeans(PlatformComponent.java:377)
at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:472)
at org.apache.tomcat.util.modeler.Registry.getMBeanServer(Registry.java:449)
at org.apache.catalina.mbeans.MBeanUtils.createServer(MBeanUtils.java:581)
at org.apache.catalina.mbeans.MBeanUtils.<clinit>(MBeanUtils.java:77)
at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.<clinit>(GlobalResourcesLifecycleListener.java:68)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:115)
at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1235)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:510)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1341)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:507)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:867)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:796)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:142)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:644)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1496)
at org.apache.catalina.startup.Catalina.load(Catalina.java:618)
at org.apache.catalina.startup.Catalina.load(Catalina.java:669)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:307)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:477)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at jdk.internal.platform.Metrics.systemMetrics(Metrics.java:63)
... 36 more
Caused by: java.lang.ExceptionInInitializerError
at jdk.internal.platform.CgroupSubsystemFactory.create(CgroupSubsystemFactory.java:95)
at jdk.internal.platform.CgroupMetrics.getInstance(CgroupMetrics.java:169)
... 41 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 4
at jdk.internal.platform.cgroupv2.CgroupV2Subsystem.initSubsystem(CgroupV2Subsystem.java:73)
at jdk.internal.platform.cgroupv2.CgroupV2Subsystem.<clinit>(CgroupV2Subsystem.java:44)
... 43 more
Exception in thread "main" java.lang.InternalError: java.lang.reflect.InvocationTargetException
at jdk.internal.platform.Metrics.systemMetrics(Metrics.java:67)
at jdk.internal.platform.Container.metrics(Container.java:42)
at sun.management.OperatingSystemImpl.<init>(OperatingSystemImpl.java:181)
at sun.management.ManagementFactoryHelper.getOperatingSystemMXBean(ManagementFactoryHelper.java:106)
at java.lang.management.PlatformComponent$7.getMXBeans(PlatformComponent.java:157)
at java.lang.management.PlatformComponent.getMXBeans(PlatformComponent.java:377)
at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:472)
at org.apache.tomcat.util.modeler.Registry.getMBeanServer(Registry.java:449)
at org.apache.catalina.mbeans.MBeanUtils.createServer(MBeanUtils.java:581)
at org.apache.catalina.mbeans.MBeanUtils.<clinit>(MBeanUtils.java:77)
at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.<clinit>(GlobalResourcesLifecycleListener.java:68)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:115)
at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1235)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:510)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1341)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:507)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:867)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:796)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:142)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:644)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1496)
at org.apache.catalina.startup.Catalina.load(Catalina.java:618)
at org.apache.catalina.startup.Catalina.load(Catalina.java:669)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:307)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:477)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at jdk.internal.platform.Metrics.systemMetrics(Metrics.java:63)
... 36 more
Caused by: java.lang.ExceptionInInitializerError
at jdk.internal.platform.CgroupSubsystemFactory.create(CgroupSubsystemFactory.java:95)
at jdk.internal.platform.CgroupMetrics.getInstance(CgroupMetrics.java:169)
... 41 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 4
at jdk.internal.platform.cgroupv2.CgroupV2Subsystem.initSubsystem(CgroupV2Subsystem.java:73)
at jdk.internal.platform.cgroupv2.CgroupV2Subsystem.<clinit>(CgroupV2Subsystem.java:44)
... 43 more
错误的原因是JDK使用cgroupv2来调用资源限制功能,但Linux内核4.5才支持cgroupv2,导致了错误的发生。
我感觉这是jdk的bug,没有正确的判断出系统使用的是cgroupv1还是cgroupv2
jdk换成1.8.0_351就好了,不一定是这个版本,去到jdk.internal.platform.Metrics里面使用的是cgroupv1就可以用
static Metrics systemMetrics() {
try {
Class var0 = Class.forName("jdk.internal.platform.cgroupv1.Metrics");
Method var1 = var0.getMethod("getInstance");
return (Metrics)var1.invoke((Object)null);
} catch (ClassNotFoundException var2) {
return null;
} catch (ReflectiveOperationException var3) {
throw new InternalError(var3);
}
}
原文地址:https://blog.csdn.net/qq_42814833/article/details/128935027
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_36806.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。