V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
twofox
V2EX  ›  Linux

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

  •  
  •   twofox · 2022-12-07 14:49:12 +08:00 · 2230 次点击
    这是一个创建于 721 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    第 1 条附言  ·  2022-12-07 16:19:00 +08:00
    感谢各位的回帖
    最终的做法是修改 _JAVA_OPTIONS

    加了之后会导致脚本里的校验 JDK 版本判断失效,所以又改了一下脚本
    12 条回复    2022-12-08 08:39:11 +08:00
    liaojl
        1
    liaojl  
       2022-12-07 14:53:55 +08:00 via iPhone   ❤️ 1
    设置 alias 看看行不行, alias java='java -Daaa=bbb', 或者看看这个参数有没有对应的环境变量,export 一个
    kokutou
        2
    kokutou  
       2022-12-07 14:54:57 +08:00 via Android   ❤️ 1
    java 的 bin 替换成 shell 脚本
    yazinnnn
        3
    yazinnnn  
       2022-12-07 14:55:53 +08:00   ❤️ 1
    alias 不行吗
    JimMoen
        4
    JimMoen  
       2022-12-07 14:56:12 +08:00   ❤️ 1
    环境变量 `_JAVA_OPTIONS` 详情参见 Google
    twofox
        5
    twofox  
    OP
       2022-12-07 14:57:14 +08:00
    @liaojl 好像有戏,我试试,谢谢大佬!
    twofox
        6
    twofox  
    OP
       2022-12-07 15:35:05 +08:00
    @JimMoen
    ```export _JAVA_OPTIONS="-Dweblogic.nodemanager.sslHostNameVerificationEnabled=false -Dweblogic.security.SSL.ignoreHostnameVerification=true"```
    会出错
    twofox
        7
    twofox  
    OP
       2022-12-07 15:40:13 +08:00
    @liaojl 似乎只能影响命令行的执行
    我的程序是由 shell 启动的,shell 里面写了 java -jar xxxx
    然后再由这个程序去执行其他程序,所以我也没办法通过这个 shell 去限制
    twofox
        8
    twofox  
    OP
       2022-12-07 15:40:35 +08:00
    @kokutou 咋替换呀大哥
    leeyuzhe
        9
    leeyuzhe  
       2022-12-07 15:49:21 +08:00
    @twofox 看看脚本里面是写的哪个路径下面的 java ,把它替换成你的 shell 文件
    RobberPhex
        10
    RobberPhex  
       2022-12-07 20:59:01 +08:00   ❤️ 1
    我觉得还有有必要解释一下各个环境变量的差异。

    首先从意图上来说:
    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
        11
    RobberPhex  
       2022-12-07 20:59:33 +08:00
    julyclyde
        12
    julyclyde  
       2022-12-08 08:39:11 +08:00   ❤️ 1
    你需要理解:环境变量和 ulimit 类似,都是只对其所属进程和子进程有效
    https://julyclyde.org/?p=578
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1105 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:47 · PVG 06:47 · LAX 14:47 · JFK 17:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.