我有一个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 package)应用程序来启动该应用程序,然后我可以使用localhost向restful服务发送http请求。我没有单独安装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,使其能够通过'mvnspring-boot:run'运行,这会有帮助吗?另外,目前我没有安装Tomcat或Apache服务器,我是否可以在IntelliJ中成功地实现web应用程序?
您已经注释掉了为Tomcat提供的作用域。在这种状态下,它默认为compile scope(编译范围),这意味着当您启动应用程序时(无论您使用哪种方法),它将在类路径上可用。
当您取消对它的注释并将其置于所提供的作用域中时,这意味着它仅在编译时可用,并且您希望JDK或容器提供对类路径的依赖关系。如果您将它部署到Tomcat的独立实例中,那么这是有意义的。
正如JB Nizet已经说过的,Spring-boot使用并启动一个嵌入式tomcat容器。但是为了做到这一点,它需要依赖关系!
正如其他人所建议的,您应该阅读spring-boot的文档以了解它是如何工作的。开始:下面是一个很好的操作方法,它解释了使用maven运行spring-boot应用程序的基本知识https://docs.spring.io/spring-boot/docs/current/reference/html/gett-start-first-application.html#gett-start-first-application.html#gett-start-first-application-run希望您能够从那里重新生成它。
注意,spring-boot-starter-web依赖于spring-boot-starter-tomcat!
我用Java 8创建了一个Java应用程序。 我已将其部署到服务器,并出现以下错误: 当我运行java版本时,我得到了以下信息: 我以前没见过这个。我需要安装JRE 8吗?
我试图在Reactor顶部设计一个管道框架。 在每个阶段(不考虑第一个和最后一个阶段),我们都有转换对象的任务(即字符串到其长度或url到其HTML内容等)。举个例子: 您可以看到中间层有3个任务,每个任务将一个X对象转换为一个Y对象(顺便说一句,它始终是一个完全连接的层) 我的问题/困境:我的第一个想法是,我所需要的是通量。merge(),然后将其连接到每个订阅者。例如: 另一种选择是放置处理器
我打算从一个Java项目中提取几个类和包,并将它们放入另一个项目中(该项目将有一个可分发的jar)。这并不太难,但当然,进行如此大规模的重构会带来一些后果。也就是说,在原始项目中有许多类是我想要提取的类的子类。实现这种重构的最佳方法是什么?
我在尝试为MacBook安装nestJS时遇到了问题,当我使用$npm install-g@nestJS/cli时,这个错误总是在我的终端上弹出。是我做错了什么,还是我没有把这个命令行放在正确的地方?请帮忙:)
我想有一个使用Spring Boot的微服务项目,它通过通过Spring Data JPA项目创建的依赖项访问实体和DAO。这个想法是多个微服务可以获得该依赖项。 然而,当jar在Spring Boot Data JPA项目中组装时,它通过starter依赖项包含了许多依赖项。其中大多数也出现在使用它的Spring Boot Microservice项目中。 您将如何通过Spring Data J
以我的拙见,关于“什么是单子”这个著名问题的答案,尤其是投票最多的答案,试图解释什么是单子,而没有明确解释为什么单子是真正必要的。它们能被解释为一个问题的解决方案吗?