内置Spring Boot项目后server.port属性不起作用

Jam*_*mes 0 java spring tomcat maven spring-boot

我正在从事Spring Boot项目,并且一切正常,现在我想构建并运行该应用程序。在application.properties文件中,我server.port = 8090 使用maven构建项目后设置了属性,我运行以下命令, java -jar jarfilename.jar但它表示端口8080已在使用中。我尝试这些命令:

java -jar  -Dport=8090 jarfilename.jar
Run Code Online (Sandbox Code Playgroud)

java -jar  jarfilename.jar --port=8090
Run Code Online (Sandbox Code Playgroud)

但我也得到了相同的消息,端口8080已经在使用中。

我想知道为什么要使用端口号8080 而忽略8090我在application.properties文件中设置的端口号。

注意:(我使用的是tomcat嵌入式服务器),当我检查target / classes..application.properties文件夹时,没有找到property server.port=8090

谁能向我解释到底发生了什么?提前致谢。

小智 6

application.properties是否位于正确的位置?来自Spring.io的描述:

SpringApplication将在以下位置从application.properties文件加载属性,并将其添加到Spring Environment:

  1. 当前目录的/ config子目录。
  2. 当前目录
  3. 类路径/ config包
  4. 类路径根

该列表按优先级排序(在列表较高位置定义的属性会覆盖在较低位置定义的属性)。

用于java -jar -Dserver.port=8090 jarfilename.jar从命令行设置端口。

Hint, from Spring.io: If you want to use the short term -Dport=8090, you can use server.port=${port:8080} in your application property file.


小智 5

我遇到了同样的问题,就我而言,我没有将参数传递给 SpringApplication。

public static void main(String[] args) {
    SpringApplication.run(MySpringConfiguration.class);
}
Run Code Online (Sandbox Code Playgroud)

应该

public static void main(String[] args) {
    SpringApplication.run(MySpringConfiguration.class, args);
}
Run Code Online (Sandbox Code Playgroud)