You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在直接用Java运行SpringBoot WAR包时传递user.timezone作为JVM参数

问题解答

当然可以通过JVM参数设置user.timezone,你之前的尝试失败是因为参数位置或用法错误:

错误原因分析

  • 第一种方式:JVM参数(以-D开头的参数)必须放在-jar参数之前。-jar之后的参数都会被当作应用程序的启动参数,而非JVM参数,所以你的-Duser.timezone根本没被JVM识别。
  • 第二种方式:-Dspring-boot.run.jvmArguments是Spring Boot Maven/Gradle插件的专属参数,只有用mvn spring-boot:run或gradle bootRun启动应用时才生效,直接用java -jar执行WAR包时这个参数完全无效。

正确命令写法

把-Duser.timezone放在java命令之后、-jar之前即可:

java -Duser.timezone=America/New_York -jar build/libs/sample-project-0.1.0.war --spring.profiles.active=dev

验证时区是否生效

可以在应用中添加代码验证时区设置:

// 在Spring Boot应用的组件中打印默认时区
System.out.println("当前JVM时区:" + TimeZone.getDefault().getID());

启动后如果控制台输出America/New_York,说明设置成功。

内容的提问来源于stack exchange,提问作者bobbyrne01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:45:30