我是Java新手,目前负责管理新应用程序。我正在尝试启动应用程序及其失败,并出现以下错误:

Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:687)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:967)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:956)
        at com.thinkbiganalytics.controller.Application.main(Application.java:53)
Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:98)
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:75)
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:378)
        at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:155)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:157)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
        ... 7 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.setFilterChainProxySecurityConfigurer(org.springframework.security.config.annotation.ObjectPostProcessor,java.util.List) throws java.lang.Exception; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'formBasedWebSecurityConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.security.authentication.AuthenticationProvider com.thinkbiganalytics.auth.FormBasedWebSecurityConfiguration.authenticationProvider; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationProvider': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.thinkbiganalytics.auth.AuthenticationService com.thinkbiganalytics.auth.AuthServiceAuthenticationProvider.authenticationService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.thinkbiganalytics.datalake.podium.restclient.PodiumRestClient com.thinkbiganalytics.datalake.podium.auth.PodiumAuthenticationService.podiumRestClient; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'podiumRestClientImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private boolean com.thinkbiganalytics.datalake.podium.restclient.PodiumRestClientImpl.useHttps; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'boolean'; nested exception is java.lang.IllegalArgumentException: Invalid boolean value [${podium.useHttps}]
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)

最佳答案

TL; DR:读取Spring给您的错误。

让我们来处理错误并系统地解决它:

Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
            at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133)
            at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
            at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
            at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:687)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:967)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:956)
            at com.thinkbiganalytics.controller.Application.main(Application.java:53)
    Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
            at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:98)
            at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:75)
            at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:378)
            at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:155)
            at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:157)
            at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
            ... 7 more
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.setFilterChainProxySecurityConfigurer(org.springframework.security.config.annotation.ObjectPostProcessor,java.util.List) throws java.lang.Exception; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'formBasedWebSecurityConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.security.authentication.AuthenticationProvider com.thinkbiganalytics.auth.FormBasedWebSecurityConfiguration.authenticationProvider; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationProvider': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.thinkbiganalytics.auth.AuthenticationService com.thinkbiganalytics.auth.AuthServiceAuthenticationProvider.authenticationService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.thinkbiganalytics.datalake.podium.restclient.PodiumRestClient com.thinkbiganalytics.datalake.podium.auth.PodiumAuthenticationService.podiumRestClient; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'podiumRestClientImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private boolean com.thinkbiganalytics.datalake.podium.restclient.PodiumRestClientImpl.useHttps; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'boolean'; nested exception is java.lang.IllegalArgumentException: Invalid boolean value [${podium.useHttps}]
            at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)


首先,我们有Exception in thread "main"-除了“由于无法启动嵌入式容器”导致状态炸毁之外,它什么也没告诉我们。

好的,是什么原因导致的,让我们进入下一个层次:

Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat


好吧,那儿不多了。让我们进入下一个层次:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Injection of autowired dependencies failed


好的,现在到了某处-由于自动装配问题,我们无法创建WebSecurityConfiguration,但是那是什么问题呢?

Could not autowire method: public void org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.setFilterChainProxySecurityConfigurer(org.springframework.security.config.annotation.ObjectPostProcessor,java.util.List)


嗯,好的,Spring无法自动连接该方法,为什么不呢?

nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'formBasedWebSecurityConfiguration'


嗯,好的-因此它无法自动连接无法创建formBasedWebSecurityConfiguration的方法。为什么不?

Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.security.authentication.AuthenticationProvider


啊,没有AuthenticationProvider。为什么不?

Could not autowire field: private com.thinkbiganalytics.auth.AuthenticationService com.thinkbiganalytics.auth.AuthServiceAuthenticationProvider.authenticationService


啊,没有authenticationService。为什么不?

Could not autowire field: com.thinkbiganalytics.datalake.podium.restclient.PodiumRestClient


啊,没有PodiumRestClient。为什么不?

Could not autowire field: private boolean com.thinkbiganalytics.datalake.podium.restclient.PodiumRestClientImpl.useHttps


好的,它无法创建PodiumRestClientImpl,因为它无法自动装配boolean useHttps。为什么不?

Failed to convert value of type 'java.lang.String' to required type 'boolean'; nested exception is java.lang.IllegalArgumentException: Invalid boolean value [${podium.useHttps}]


因此它无法自动连接PodiumRestClientImpl.useHttps,因为它无法将值String${podium.useHttps}转换为boolean。很公平。

因此,似乎是您在自动装配配置值时未正确使用SpEL或未配置PropertySource来将占位符解析为配置值。

关于spring - 由于“自动连接依赖项注入(inject)失败”而无法启动嵌入式Tomcat,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36375153/

10-10 13:34
查看更多