在直接使用Java运行基于SpringBoot的war时,如何将user.timezone作为JVM参数传递

1l5u6lss  于 2023-03-02  发布在  Spring
关注(0)|答案(1)|浏览(124)

我将一个基于Sping Boot 的应用程序打包为.war,可以直接使用Java执行它,如下所示:

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

有没有办法为user.timezone提供一个值作为JVM参数?
我尝试了以下方法,但都没有设置user.timezone属性:

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

java -jar build/libs/sample-project-0.1.0.war --spring.profiles.active=dev -Dspring-boot.run.jvmArguments="-Duser.timezone=America/New_York"
xoshrz7s

xoshrz7s1#

让我们看一下java命令帮助:

Usage: java [options] <mainclass> [args...]
           (to execute a class)
   or  java [options] -jar <jarfile> [args...]
           (to execute a jar file)
   or  java [options] -m <module>[/<mainclass>] [args...]
       java [options] --module <module>[/<mainclass>] [args...]
           (to execute the main class in a module)
   or  java [options] <sourcefile> [args]
           (to execute a single source-file program)

 Arguments following the main class, source file, -jar <jarfile>,
 -m or --module <module>/<mainclass> are passed as the arguments to
 main class.

在您情况下:

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

由于在**-jar选项之后**指定了-Duser.timezone=America/New_York参数,因此JVM将其视为主类参数并将其忽略,正确的命令行为:

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

相关问题