Spring-控制台未加载引导徽标,如何在 tomcat 服务器上启动应用程序?
Spring-boot logo not loading on console, how to start application on tomcat server?
这是一个使用 spring-boot 构建的简单微服务。当我作为 Java 应用程序执行时,应用程序工作正常。但是当我在服务器上 运行 即 Tomcat Server v8.5 服务器显示 Started & Syncnorized 但在控制台中, spring-boot 徽标没有出现并且应用程序没有启动.我 IDE 上的其他项目运行良好。
我尝试了以下但没有成功:
1)删除服务器重新添加。
2) 使用 Maven 清理项目。
3) 更改了 BuildPath 设置(JDK 版本、Facets 等)。
截图参考
1) https://i.imgur.com/fVFLhNK.png
2)https://i.imgur.com/nTSWEGd.png
主应用程序
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class ShUsersApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(ShUsersApplication.class, args);
}
}
控制器
package com.logituit.sitehawk.Controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.lang.NonNull;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.google.gson.Gson;
import com.logituit.sitehawk.Model.Contract;
import com.logituit.sitehawk.Service.UserService;
@RestController
@RequestMapping("/sitehawk")
public class UserController {
private UserService userService;
private Gson gson;
@Autowired
public UserController(@NonNull final UserService userService, @NonNull Gson gson) {
this.userService = userService;
this.gson = gson;
}
@PostMapping("/save")
public String saveDetails(HttpEntity<String> httpEntity) {
final Contract contract = gson.fromJson(httpEntity.getBody(), Contract.class);
if (contract != null) {
userService.createTicketBySite(contract);
return "Success";
} else
return "Failed";
}
@GetMapping("/ticketsfromsite/{siteId}")
public List<Contract> getAllTicketsBySite(HttpEntity<String> httpEntity, @PathVariable("siteId") final int siteId) {
return userService.getTicketsBySite(siteId);
}
}
POM.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.logituit.sitehawk</groupId>
<artifactId>SH_Users</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SH_Users</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties
#Local Database
spring.datasource.url = jdbc:mysql://localhost:3306/site_hawk
spring.datasource.username = root
spring.datasource.password = admin123
server.port=8089
请帮助我如何 运行 我的 spring-boot App.I 想要在控制台上看到 Spring boot 运行ning。但是 Spring Boot 的大 Logo 没有出现在控制台上。
应用程序容器(Tomcat 包括)的正常部署格式是 .war 但是 Spring 默认情况下启动包 运行可用的 jar 文件。
您可以在pom.xml文件中更改打包格式。
<packaging>war</packaging>
您可能还需要为 Tomcat 特定的 类 添加额外的依赖项。
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
这样的设置应该产生一个 .war 文件到 $project_dir/target/classes 大多数 servlet 容器可以成功运行.
服务器不会简单地在控制台中打印所有内容,因为同时会有很多应用程序运行,控制台将变得非常混乱[=18] =],所以服务器的解决方案被记录到每个应用程序中。尝试找到您的应用程序日志,也许 spring 徽标会在那里。
还要确保您上传的是 .war
文件。 jar包是给运行是你的电脑。对于 Tomcat,您需要发送 .war
文件。您可以简单地更改 pom.xml
中的包装类型。
Usage - Apache Maven WAR Plugin
对于 运行 您在 tomcat 服务器中的应用程序,您应该通过以下方式排除嵌入式应用程序:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
正如 käyrätorvi 所说,将您的应用程序打包为 war
Spring 引导应用程序包括一个嵌入式 Web 服务器,并且可以 运行 以多种方式。 Tomcat 默认包含,可以被其他服务器覆盖。您可以找到参考 here and here.
Spring 启动应用程序与传统的 java 网络应用程序不同,在 运行 部署方面得到了简化。作为开发人员,您可以专注于开发核心逻辑、公开端点等。一旦构建,这些应用程序就可以 运行 并且不需要部署在显式服务器上,因为它们 运行来自 spring boot starter web 依赖项的嵌入式服务器。
这是一个使用 spring-boot 构建的简单微服务。当我作为 Java 应用程序执行时,应用程序工作正常。但是当我在服务器上 运行 即 Tomcat Server v8.5 服务器显示 Started & Syncnorized 但在控制台中, spring-boot 徽标没有出现并且应用程序没有启动.我 IDE 上的其他项目运行良好。
我尝试了以下但没有成功:
1)删除服务器重新添加。 2) 使用 Maven 清理项目。 3) 更改了 BuildPath 设置(JDK 版本、Facets 等)。
截图参考 1) https://i.imgur.com/fVFLhNK.png 2)https://i.imgur.com/nTSWEGd.png
主应用程序
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class ShUsersApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(ShUsersApplication.class, args);
}
}
控制器
package com.logituit.sitehawk.Controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.lang.NonNull;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.google.gson.Gson;
import com.logituit.sitehawk.Model.Contract;
import com.logituit.sitehawk.Service.UserService;
@RestController
@RequestMapping("/sitehawk")
public class UserController {
private UserService userService;
private Gson gson;
@Autowired
public UserController(@NonNull final UserService userService, @NonNull Gson gson) {
this.userService = userService;
this.gson = gson;
}
@PostMapping("/save")
public String saveDetails(HttpEntity<String> httpEntity) {
final Contract contract = gson.fromJson(httpEntity.getBody(), Contract.class);
if (contract != null) {
userService.createTicketBySite(contract);
return "Success";
} else
return "Failed";
}
@GetMapping("/ticketsfromsite/{siteId}")
public List<Contract> getAllTicketsBySite(HttpEntity<String> httpEntity, @PathVariable("siteId") final int siteId) {
return userService.getTicketsBySite(siteId);
}
}
POM.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.logituit.sitehawk</groupId>
<artifactId>SH_Users</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SH_Users</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties
#Local Database
spring.datasource.url = jdbc:mysql://localhost:3306/site_hawk
spring.datasource.username = root
spring.datasource.password = admin123
server.port=8089
请帮助我如何 运行 我的 spring-boot App.I 想要在控制台上看到 Spring boot 运行ning。但是 Spring Boot 的大 Logo 没有出现在控制台上。
应用程序容器(Tomcat 包括)的正常部署格式是 .war 但是 Spring 默认情况下启动包 运行可用的 jar 文件。
您可以在pom.xml文件中更改打包格式。
<packaging>war</packaging>
您可能还需要为 Tomcat 特定的 类 添加额外的依赖项。
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
这样的设置应该产生一个 .war 文件到 $project_dir/target/classes 大多数 servlet 容器可以成功运行.
服务器不会简单地在控制台中打印所有内容,因为同时会有很多应用程序运行,控制台将变得非常混乱[=18] =],所以服务器的解决方案被记录到每个应用程序中。尝试找到您的应用程序日志,也许 spring 徽标会在那里。
还要确保您上传的是 .war
文件。 jar包是给运行是你的电脑。对于 Tomcat,您需要发送 .war
文件。您可以简单地更改 pom.xml
中的包装类型。
Usage - Apache Maven WAR Plugin
对于 运行 您在 tomcat 服务器中的应用程序,您应该通过以下方式排除嵌入式应用程序:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
正如 käyrätorvi 所说,将您的应用程序打包为 war
Spring 引导应用程序包括一个嵌入式 Web 服务器,并且可以 运行 以多种方式。 Tomcat 默认包含,可以被其他服务器覆盖。您可以找到参考 here and here.
Spring 启动应用程序与传统的 java 网络应用程序不同,在 运行 部署方面得到了简化。作为开发人员,您可以专注于开发核心逻辑、公开端点等。一旦构建,这些应用程序就可以 运行 并且不需要部署在显式服务器上,因为它们 运行来自 spring boot starter web 依赖项的嵌入式服务器。