Нужно ли устанавливать Tomcat отдельно для проекта весенней загрузки? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть проект с начальной загрузкой, и у меня есть следующие настройки:

<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>

Причина, по которой я спрашиваю это, заключается в том, что одновременно я могу запустить свое веб-приложение (пакет военных действий) в обоих IntelliJIDE и в терминале (mvn spring-boot: run), чтобы запустить приложение, затем я могу использовать localhost для отправки http-запроса в службу restful.Я не устанавливал Tomcat отдельно.

Через некоторое время я все еще могу успешно запустить мое веб-приложение в IntelliJ, но не могу запустить его через "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?

1 Ответ

0 голосов
/ 18 сентября 2018

Вы прокомментировали область действия, предоставленную для tomcat. В этом состоянии по умолчанию компилируется область действия, что означает, что он будет доступен в пути к классам при запуске приложения (независимо от того, какой метод вы используете).

Когда вы раскомментируете его и поместите в предоставленную область, это означает, что он будет доступен только во время компиляции, и вы ожидаете, что JDK или контейнер предоставят зависимость от пути к классам. Что имеет смысл, если вы развернете его на отдельном экземпляре Tomcat.

Как уже сказал JB Nizet, Spring-boot использует и запускает встроенный контейнер Tomcat. Но для этого нужна зависимость!

Как советуют другие, вы должны прочитать документацию о Spring-Boot, чтобы узнать, как он работает. Для начала: вот хорошее руководство, объясняющее основы запуска приложения с весенней загрузкой с использованием maven https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started-first-application.html#getting-started-first-application-run Надеюсь, вы сможете воспроизвести его оттуда.

Обратите внимание, что сеть spring-boot-starter-tomcat зависит от spring-boot-starter-tomcat!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...