如何将系统属性传递给 jar 文件

Posted

技术标签:

【中文标题】如何将系统属性传递给 jar 文件【英文标题】:How to pass system properties to a jar file 【发布时间】:2015-06-30 22:13:51 【问题描述】:

我有一个主类,它需要我使用 -D 选项传递的某些属性。我可以通过将它们作为 VM 选项发送来在我的 IDE 中访问它。

我使用 Maven 将此应用程序打包到一个 jar 文件中,当我尝试以下操作时:

java -jar myjar.jar -Denviroment=dev

java -jar myjar.jar "-Denvironment=dev"

环境系统属性没有被拾取。

关于发生了什么的任何指针?

【问题讨论】:

我能够弄清楚这一点。只是为了帮助别人。我所做的只是在 jar 之前传递 -D ,如下所示: java -jar -Denvironment=dev myjar.jar (不确定这会有什么不同!) -jar myjar.jar 毕竟应该最后添加-D 见下面的答案 【参考方案1】:

添加到 Elliott 的答案,如果我只是运行它,那么我会收到一个错误:

java -Djna.nosys=true -jar jenkins.war

但如果我像这样添加引号,那么它会起作用:

java "-Djna.nosys=true" -jar jenkins.war

【讨论】:

要记住的另一件事是,不要使用大写变量名,例如 -DSPRING_PROFILES_ACTIVE=development 将不起作用。【参考方案2】:

-jar 之前传递参数。如果在 jar 文件之后传递它们,它们将被解释为命令行参数并传递给 main 中的 String[] args。喜欢,

java -Denviroment=dev -jar myjar.jar 

【讨论】:

这行得通。我使用sudo java -Dspring.datasource.url=jdbc:mysql://localhost:3306/demodb?useSSL=false -Dspring.datasource.username=root -Dspring.datasource.password=test1234 -jar backend-0.0.1-SNAPSHOT.jar 从命令行运行spring boot 应用程序 非常感谢!

以上是关于如何将系统属性传递给 jar 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将本地 Maven m2 作为属性传递给 Gradle?

将环境变量传递给大型机 JVM

Spring:如何将属性文件提供给 Java.exe

如何将字段名称传递给属性文件中的全局消息

从 Gradle 将系统属性传递到 Spring Boot

通过 Gradle 运行 Java 类时传递系统属性和参数的问题