如何将系统属性传递给 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 文件的主要内容,如果未能解决你的问题,请参考以下文章