【发布时间】:2019-02-21 20:47:39
【问题描述】:
我有一个 spring-boot 项目,我有以下设置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--<scope>provided</scope>-->
</dependency>
我问这个的原因是,有一次我可以在 IntelliJ IDE 和终端 (mvn spring-boot:run) 上运行我的 web(war 包)应用程序来启动应用程序,然后我可以使用 localhost将http请求发送到restful服务。我没有单独安装Tomcat。
过了一段时间,我仍然可以在 IntelliJ 中成功运行我的 Web 应用程序,但无法通过“mvn spring-boot:run”运行它。我想这是由于我的 pom 文件发生了一些变化。错误信息似乎与 Tomcat 相关:
[WARNING]
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 org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run (AbstractRunMojo.java:506)
at java.lang.Thread.run (Thread.java:748)
Caused by: 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:137)
at org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:536)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh (EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh (SpringApplication.java:761)
at org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:371)
at org.springframework.boot.SpringApplication.run (SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run (SpringApplication.java:1186)
at org.springframework.boot.SpringApplication.run (SpringApplication.java:1175)
at com.jd.jnlu.qe.boot.JnluQEWebStart.main (JnluQEWebStart.java:22)
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.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run (AbstractRunMojo.java:506)
at java.lang.Thread.run (Thread.java:748)
Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
如果我在我的机器上安装 Tomcat 以便能够通过 'mvn spring-boot:run' 运行它会有帮助吗?另外,目前我没有安装 Tomcat 或 Apache 服务器,我是否可以在 IntelliJ 中成功安装 Web 应用程序?
【问题讨论】:
-
不,不会。它启动一个嵌入式容器。不要尝试随机的事情来解决问题。相反,请阅读异常的完整堆栈跟踪以找出问题所在。另外,请阅读 spring boot 文档:它解释了 spring boot 的工作原理。
-
问题是我不知道是什么问题。我用谷歌搜索了很多,但找不到解决问题的线索。
-
堆栈跟踪中应该有更多关于嵌入式 tomcat 没有启动的原因
-
你能不能把你的 pom 从 war 换成 jar,然后从 cod 行重新开始。您可能还需要删除 tomcat 依赖项,因为 web 有一个或需要从 web 中排除
标签: spring-boot tomcat intellij-idea