无法启动嵌入式 Tomcat 服务器 - 无效的密钥库格式

Posted

技术标签:

【中文标题】无法启动嵌入式 Tomcat 服务器 - 无效的密钥库格式【英文标题】:Unable to start embedded Tomcat server - Invalid keystore format 【发布时间】:2021-02-20 23:57:48 【问题描述】:

将 keystore.jks 添加到资源目录时出现此错误。 当我在命令行中运行 spring-boot 应用程序时,我正面临这个问题。 在 IntelliJ IDEA 应用程序运行没有任何问题。

2020-11-08 21:37:05.776 ERROR 2422 --- [main] os.boot.SpringApplication : 应用程序运行失败

org.springframework.context.ApplicationContextException: 无法启动 bean 'webServerStartStop';嵌套异常是 org.springframework.boot.web.server.WebServerException: Unable to start Embedded Tomcat server 在 org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:185) ~[spring-context-5.2.9.RELEASE.jar!/:5.2.9.RELEASE] 在 org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53) ~[spring-context-5.2.9.RELEASE.jar!/:5.2.9.RELEASE] 在 org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360) ~[spring-context-5.2.9.RELEASE.jar!/:5.2.9.RELEASE] 在 org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158) ~[spring-context-5.2.9.RELEASE.jar!/:5.2.9.RELEASE] 在 org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122) ~[spring-context-5.2.9.RELEASE.jar!/:5.2.9.RELEASE] 在 org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:895) ~[spring-context-5.2.9.RELEASE.jar!/:5.2.9.RELEASE] 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:554) ~[spring-context-5.2.9.RELEASE.jar!/:5.2.9.RELEASE] 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) ~[spring-boot-2.3.4.RELEASE.jar!/:2.3.4.RELEASE] 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) ~[spring-boot-2.3.4.RELEASE.jar!/:2.3.4.RELEASE] 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) ~[spring-boot-2.3.4.RELEASE.jar!/:2.3.4.RELEASE] 在 org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.3.4.RELEASE.jar!/:2.3.4.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.3.4.RELEASE.jar!/:2.3.4.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) ~[spring-boot-2.3.4.RELEASE.jar!/:2.3.4.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.3.4.RELEASE.jar!/:2.3.4.RELEASE] 在 net.nidmi.web.WebReplyApplication.main(WebReplyApplication.java:22) ~[classes!/:0.0.1-SNAPSHOT] 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] 在 java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] 在 org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[web-reply-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] 在 org.springframework.boot.loader.Launcher.launch(Launcher.java:107) ~[web-reply-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] 在 org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[web-reply-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] 在 org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) ~[web-reply-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] 原因:org.springframework.boot.web.server.WebServerException:无法启动嵌入式 Tomcat 服务器 在 org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:229) ~[spring-boot-2.3.4.RELEASE.jar!/:2.3.4.RELEASE] 在 org.springframework.boot.web.servlet.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:43) ~[spring-boot-2.3.4.RELEASE.jar!/:2.3.4.RELEASE] 在 org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182) ~[spring-context-5.2.9.RELEASE.jar!/:5.2.9.RELEASE] ...省略了22个常用框架 引起:java.lang.IllegalArgumentException:standardService.connector.startFailed 在 org.apache.catalina.core.StandardService.addConnector(StandardService.java:231) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviousRemovedConnectors(TomcatWebServer.java:282) ~[spring-boot-2.3.4.RELEASE.jar!/:2.3.4.RELEASE] 在 org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:213) ~[spring-boot-2.3.4.RELEASE.jar!/:2.3.4.RELEASE] ...省略了24个常用框架 原因:org.apache.catalina.LifecycleException:协议处理程序启动失败 在 org.apache.catalina.connector.Connector.startInternal(Connector.java:1067) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.catalina.core.StandardService.addConnector(StandardService.java:227) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] ...省略了26个常用框架 原因:java.lang.IllegalArgumentException:无效的密钥库格式 在 org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:216) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1141) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1227) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:592) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.catalina.connector.Connector.startInternal(Connector.java:1064) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] ...省略了28个常用框架 原因:java.io.IOException:无效的密钥库格式 在 java.base/sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:667) ~[na:na] 在 java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:222) ~[na:na] 在 java.base/java.security.KeyStore.load(KeyStore.java:1479) ~[na:na] 在 org.apache.tomcat.util.security.KeyStoreUtil.load(KeyStoreUtil.java:69) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:216) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:207) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:282) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:246) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] 在 org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97) ~[tomcat-embed-core-9.0.38.jar!/:9.0.38] ... 省略了 34 个常用帧

【问题讨论】:

【参考方案1】:

创建jar文件时,我检查了目标目录,classpath中的keystore.jks文件没有被识别!!! 我只是在目标中物理复制了 JKS 文件并解决了。

【讨论】:

以上是关于无法启动嵌入式 Tomcat 服务器 - 无效的密钥库格式的主要内容,如果未能解决你的问题,请参考以下文章

运行 Eureka Server 时无法启动嵌入式 Tomcat

将 Spring Boot 战争部署到 Tomcat 服务器并收到“无法启动嵌入式 Tomcat org.springframework.context.ApplicationContextExcep

LifecycleException:无法在 Tomcat 中启动组件部署战争

Spring Boot postgresql嵌入式tomcat启动失败

无法在 Eclipse 中启动 Spring Boot App:无法启动嵌入式 Tomcat

无法启动嵌入式 Tomcat NoClassDefFoundError DispatcherServletPath