我正在开发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
。
任何人都可以向我解释一下这是什么意外吗? 提前谢谢。
答案 0 :(得分:6)
application.properties是否位于正确的位置? 来自Spring.io的说明:
SpringApplication将从以下位置的application.properties文件加载属性,并将它们添加到Spring环境中:
- 当前目录的A / config子目录。
- 当前目录
- classpath / config包
- classpath root
醇>列表按优先顺序排列(在列表中较高位置定义的属性会覆盖在较低位置定义的属性)。
使用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>.
因此,当服务器初始化时,它使用了属性设置中的端口,该端口在层级阶梯中较高。