Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java server.port属性在buildin spring启动项目后不工作_Java_Spring_Maven_Tomcat_Spring Boot - Fatal编程技术网

Java server.port属性在buildin spring启动项目后不工作

Java server.port属性在buildin spring启动项目后不工作,java,spring,maven,tomcat,spring-boot,Java,Spring,Maven,Tomcat,Spring Boot,我正在进行SpringBoot项目,一切正常,现在我想构建并运行这个应用程序。 在application.properties文件中,我设置了属性server.port=8090 使用maven构建项目后,我运行以下命令 java-jarjarfilename.jar但是它说端口8080已经在使用中。 我尝试以下命令: java -jar -Dport=8090 jarfilename.jar 及 但我也收到了同样的消息,端口8080已经在使用中 我想知道为什么它需要端口号8080,而忽略我

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

java -jar  -Dport=8090 jarfilename.jar

但我也收到了同样的消息,端口
8080
已经在使用中

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

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

谁能给我解释一下发生了什么事?
提前感谢。

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

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

  • 当前目录的/config子目录
  • 当前目录
  • 类路径/配置包
  • 类路径根
  • 列表按优先级排序(在列表中较高位置定义的特性将覆盖在较低位置定义的特性)

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


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

    我遇到了同样的问题,在我的情况下,我没有将参数传递给SpringApplication

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

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

    我知道这是一篇老文章,但我可能知道答案(可能会帮助其他人):有一个配置设置的层次结构。

    applicaton.properties文件位于底部(OS env.variables、Java系统属性等都在上面),另一方面,终端参数位于顶部


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

    尝试:“java-jar-Dserver.port=8090 jarfilename.jar”commandHi@SándorJuhos非常感谢,它工作得很好,但是你能解释一下为什么它会忽略application.properties文件中的属性server.port=8090吗?@Ali,你使用的是带嵌入式tomcat的springboot还是独立的tomcat<代码>服务器端口仅在嵌入式tomcat模式下工作。如果您使用的是独立的tomcat,那么它就不起作用。您必须在tomcat的
    server.xml
    中手动配置端口。您能确认吗?谢谢@harshavmb的timr,是的,我使用的是嵌入式tomcat,但我解决了这个问题,请注意:在PowerShell中“-Dserver.port=”参数不起作用,您可以使用“-server.port=”代替,但它应该位于jar文件的路径之后。使用CMD时,这两种方法都有效。
    public static void main(String[] args) {
        SpringApplication.run(MySpringConfiguration.class, args);
    }