buildin spring boot项目

时间:2017-06-26 11:29:11

标签: java spring maven tomcat spring-boot

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

java -jar  -Dport=8090 jarfilename.jar

java -jar  jarfilename.jar --port=8090

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

我想知道为什么它需要端口号8080并忽略我在application.properties文件中设置的端口号8090

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

任何人都可以向我解释一下这是什么意外吗? 提前谢谢。

3 个答案:

答案 0 :(得分:6)

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

  

SpringApplication将从以下位置的application.properties文件加载属性,并将它们添加到Spring环境中:

     
      
  1. 当前目录的A / config子目录。
  2.   
  3. 当前目录
  4.   
  5. classpath / config包
  6.   
  7. classpath root
  8.         

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

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

来自Spring.io的提示:如果您想使用短期-Dport=8090,可以在应用程序属性文件中使用server.port=${port:8080}

答案 1 :(得分:3)

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

public static void main(String[] args) {
    SpringApplication.run(MySpringConfiguration.class);
}

应该是

public static void main(String[] args) {
    SpringApplication.run(MySpringConfiguration.class, args);
}

答案 2 :(得分:0)

我知道这是一个旧帖子,但我可能知道答案(也许它会帮助其他人):配置设置有层次结构。

appplicaton.properties 文件在底部(操作系统环境变量、Java 系统属性等都在上面),另一方面,终端参数在顶部< /em>.

因此,当服务器初始化时,它使用了属性设置中的端口,该端口在层级阶梯中较高。