在学习springboot时,在idea上测试成功,但打包层jar使用cmd命令行启动springboot时,启动失败,显示如下异常
2022-06-11 09:53:06.511 INFO ??? --- [ main] com.boot.Boot1Application : Starting Boot
1Application v0.0.1-SNAPSHOT using Java 11.0.1 on break with PID ??? (D:\javadata\SpringBoot\boot1\target\boot1-
0.0.1-SNAPSHOT.jar started by break in D:\javadata\SpringBoot\boot1\target)
2022-06-11 09:53:06.513 INFO ??? --- [ main] com.boot.Boot1Application : No active pro
file set, falling back to default profiles: default
2022-06-11 09:53:07.091 WARN ??? --- [ main] ConfigServletWebServerApplicationContext : Exception enc
ountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationCont
extException: Unable to start web server; nested exception is org.springframework.beans.factory.BeanCreationExce
ption: Error creating bean with name 'tomcatServletWebServerFactory' defined in class path resource [org/springf
ramework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedTomcat.class]: Bean instant
iation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Fail
ed to instantiate [org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory]: Factory method '
tomcatServletWebServerFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: java/util/lo
gging/Logger
2022-06-11 09:53:07.100 INFO ??? --- [ main] ConditionEvaluationReportLoggingListener :
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled
.
2022-06-11 09:53:07.120 ERROR ??? --- [ main] o.s.boot.SpringApplication : Application r
un failed
org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.spr
ingframework.beans.factory.BeanCreationException: Error creating bean with name 'tomcatServletWebServerFactory'
defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfig
uration$EmbeddedTomcat.class]: Bean instantiation via factory method failed; nested exception is org.springframe
work.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.embedded.tomcat.Tomca
tServletWebServerFactory]: Factory method 'tomcatServletWebServerFactory' threw exception; nested exception is j
ava.lang.NoClassDefFoundError: java/util/logging/Logger
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebS
erverApplicationContext.java:163) ~[spring-boot-2.6.2.jar!/:2.6.2]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.jav
a:577) ~[spring-context-5.3.14.jar!/:5.3.14]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebSer
verApplicationContext.java:145) ~[spring-boot-2.6.2.jar!/:2.6.2]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) ~[spring-boot-2.6.2.ja
r!/:2.6.2]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412) ~[spring-boot-2
.6.2.jar!/:2.6.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:302) ~[spring-boot-2.6.2.jar!/:
2.6.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) ~[spring-boot-2.6.2.jar!/
:2.6.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) ~[spring-boot-2.6.2.jar!/
:2.6.2]
at com.boot.Boot1Application.main(Boot1Application.java:10) ~[classes!/:0.0.1-SNAPSHOT]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na
:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[boot1-0.0.1-SNAPSHOT
.jar:0.0.1-SNAPSHOT]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) ~[boot1-0.0.1-SNAPSHOT.jar:0.0.1-S
NAPSHOT]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[boot1-0.0.1-SNAPSHOT.jar:0.0.1-SN
APSHOT]
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) ~[boot1-0.0.1-SNAPSHOT.jar:0.0.
1-SNAPSHOT]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tomcatServlet
WebServerFactory' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/ServletWebS
erverFactoryConfiguration$EmbeddedTomcat.class]: Bean instantiation via factory method failed; nested exception
is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.emb
edded.tomcat.TomcatServletWebServerFactory]: Factory method 'tomcatServletWebServerFactory' threw exception; nes
ted exception is java.lang.NoClassDefFoundError: java/util/logging/Logger
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:65
8) ~[spring-beans-5.3.14.jar!/:5.3.14]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(Construct
orResolver.java:638) ~[spring-beans-5.3.14.jar!/:5.3.14]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryM
ethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.14.jar!/:5.3.14]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(Abstr
actAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.14.jar!/:5.3.14]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAut
owireCapableBeanFactory.java:582) ~[spring-beans-5.3.14.jar!/:5.3.14]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutow
ireCapableBeanFactory.java:542) ~[spring-beans-5.3.14.jar!/:5.3.14]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.
java:335) ~[spring-beans-5.3.14.jar!/:5.3.14]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonB
eanRegistry.java:234) ~[spring-beans-5.3.14.jar!/:5.3.14]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
~[spring-beans-5.3.14.jar!/:5.3.14]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~
[spring-beans-5.3.14.jar!/:5.3.14]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getWebServerFactory(S
ervletWebServerApplicationContext.java:217) ~[spring-boot-2.6.2.jar!/:2.6.2]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(Servl
etWebServerApplicationContext.java:180) ~[spring-boot-2.6.2.jar!/:2.6.2]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebS
erverApplicationContext.java:160) ~[spring-boot-2.6.2.jar!/:2.6.2]
... 16 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot
.web.embedded.tomcat.TomcatServletWebServerFactory]: Factory method 'tomcatServletWebServerFactory' threw except
ion; nested exception is java.lang.NoClassDefFoundError: java/util/logging/Logger
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiation
Strategy.java:185) ~[spring-beans-5.3.14.jar!/:5.3.14]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:65
3) ~[spring-beans-5.3.14.jar!/:5.3.14]
... 28 common frames omitted
Caused by: java.lang.NoClassDefFoundError: java/util/logging/Logger
at org.apache.juli.logging.DirectJDKLog.<init>(DirectJDKLog.java:61) ~[tomcat-embed-core-9.0.56.jar!/:na
]
at org.apache.juli.logging.DirectJDKLog.getInstance(DirectJDKLog.java:181) ~[tomcat-embed-core-9.0.56.ja
r!/:na]
at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:133) ~[tomcat-embed-core-9.0.56.jar!/:
na]
at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:156) ~[tomcat-embed-core-9.0.56.jar!/:
na]
at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:211) ~[tomcat-embed-core-9.0.56.jar!/:na]
at org.apache.catalina.core.AprLifecycleListener.<clinit>(AprLifecycleListener.java:55) ~[tomcat-embed-c
ore-9.0.56.jar!/:na]
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getDefaultLifecycleListene
rs(TomcatServletWebServerFactory.java:179) ~[spring-boot-2.6.2.jar!/:2.6.2]
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.<init>(TomcatServletWebSer
verFactory.java:127) ~[spring-boot-2.6.2.jar!/:2.6.2]
at org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomca
t.tomcatServletWebServerFactory(ServletWebServerFactoryConfiguration.java:76) ~[spring-boot-autoconfigure-2.6.2.
jar!/:2.6.2]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na
:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiation
Strategy.java:154) ~[spring-beans-5.3.14.jar!/:5.3.14]
... 29 common frames omitted
Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471) ~[na:na]
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151) ~[b
oot1-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na]
... 43 common frames omitted
PS D:\javadata\SpringBoot\boot1\target>
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588) ~[na:na]
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151) ~[boot1-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na]
... 43 common frames omitted
在网上查看了许多解决方法,大多都是由于所导入的jar包的版本不对,尝试导入其他版本还是不对,于是对着下面异常进行分析
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tomcatServlet
WebServerFactory' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/ServletWebS
erverFactoryConfiguration$EmbeddedTomcat.class]: Bean instantiation via factory method failed; nested exception
is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.emb
edded.tomcat.TomcatServletWebServerFactory]: Factory method 'tomcatServletWebServerFactory' threw exception; nes
ted exception is java.lang.NoClassDefFoundError: java/util/logging/Logger
发现是ava自带log功能,用的是JDK标准库中的类
java.util.logging.Logger
在加载出现了错误,我用的版本是jdk11,最后发现是自己先前自己生成了一个jre的包,然后再系统变量里面吧这个jre的路径加进去了和原有的java路径冲突,导致了启动失败,只需要删除jre的系统路径,重新打包启动就ok了。
初次学习,碰见问题自己只能瞎摸索。希望大佬们指导。
版权声明:本文为weixin_45606320原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。