在 Linux 上,如何在执行 Java -jar 的时候全局添加一个参数

2022 年 12 月 7 日
 twofox

在 linux 上如何实现 执行 java -jar xxx.jar

默认执行了 java -jar -Daaa=bbb xxx.jar

ps:为啥要这么做的呢,原因是安装 Oracle 的一个套件除了问题,默认校验了 SSL ,导致无法继续自动安装

2956 次点击
所在节点    Linux
12 条回复
liaojl
2022 年 12 月 7 日
设置 alias 看看行不行, alias java='java -Daaa=bbb', 或者看看这个参数有没有对应的环境变量,export 一个
kokutou
2022 年 12 月 7 日
java 的 bin 替换成 shell 脚本
yazinnnn
2022 年 12 月 7 日
alias 不行吗
JimMoen
2022 年 12 月 7 日
环境变量 `_JAVA_OPTIONS` 详情参见 Google
twofox
2022 年 12 月 7 日
@liaojl 好像有戏,我试试,谢谢大佬!
twofox
2022 年 12 月 7 日
@JimMoen
```export _JAVA_OPTIONS="-Dweblogic.nodemanager.sslHostNameVerificationEnabled=false -Dweblogic.security.SSL.ignoreHostnameVerification=true"```
会出错
twofox
2022 年 12 月 7 日
@liaojl 似乎只能影响命令行的执行
我的程序是由 shell 启动的,shell 里面写了 java -jar xxxx
然后再由这个程序去执行其他程序,所以我也没办法通过这个 shell 去限制
twofox
2022 年 12 月 7 日
@kokutou 咋替换呀大哥
ThisDay
2022 年 12 月 7 日
@twofox 看看脚本里面是写的哪个路径下面的 java ,把它替换成你的 shell 文件
RobberPhex
2022 年 12 月 7 日
我觉得还有有必要解释一下各个环境变量的差异。

首先从意图上来说:
1. 如果需要给**java 和 jps 等运维工具**设置参数,而且这些参数是**java 通用**的,那么应该设置给环境变量`JAVA_TOOL_OPTIONS`。
2. 如果需要给**javaj 和 jps 等运维工具**j 设置参数,而且这些参数是**jvm 厂商相关**j 的,比如是 dragonwell 特有的开关,那么应该设置`DRAGONWELL_JAVA_OPTIONS`。
3. 如果需要**给 java 设置参数**,但是**不给运维工具设置**,而且参数是**java 通用**的,那么应该设置环境变量`JAVA_TOOL_OPTIONS`,并设置`DRAGONWELL_JAVA_TOOL_OPTIONS_JDK_ONLY=true`。
3.1. 如果是 jdk9 及以上,则应该使用更加标准的`JDK_JAVA_OPTIONS`。
4. 如果需要**给 java 设置参数**,但是**不给运维工具设置**,而且参数是**jvm 厂商相关**的,那么应该设置环境变量`DRAGONWELL_JAVA_OPTIONS`,并设置`DRAGONWELL_JAVA_TOOL_OPTIONS_JDK_ONLY=true`。

一些技术细节可以参考: [dragonwell 让 java agent 更好用]( https://robberphex.com/java-agent-is-getting-better-at-dragonwell/)
RobberPhex
2022 年 12 月 7 日
julyclyde
2022 年 12 月 8 日
你需要理解:环境变量和 ulimit 类似,都是只对其所属进程和子进程有效
https://julyclyde.org/?p=578

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/900793

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX