开发者

java -D参数设置系统属性无效问题及解决

目录
  • Java -D参数设置系统属性无效
  • java程序启动参数 -D详解
    • 下面我们来写个测试方法就知道了
  • 总结

    java -D参数设置系统属性无效

    我们都知道如何在Java中获取系统属性:

    System.getProperty(ESClientConstance.HTTP_PROXY_HOST);

    这样可以获取操作系统默认的一些属性值。

    如果我们需要自定义一些系统属性,那么这样定义:

    -Dhttp_proxy_host=192.19.19.19

    但是要注意下面这种情况,会导致java -D失效,进而导致System.getProperty获取不到属性值。

    比如我的这样一个以java -jar方式启动的脚本:

    nohup java -agentlib:jdwp=transport=dt_socket,address=39502,server=y,suspend=n \
    -jar /opt/spider-es-cli/es-client-1.0.0.jar \
    -Dhttp_proxy_host=100.129.18.11 \
    -Dhttp_proxy_p编程客栈ort=3128 \
    --spring.profiles.active=prod \
    --server.port=9502 >/dev/null 2>&1 &
    

    注意-D错误地配置在编程客栈-jar之后。

    处理方式是将-D正确地配置在-jar之前即可。

    同样地,对java 类名方式启动也一样,注意要将-D配置在类名之前。

    java程序启动参数 -D详解

    java程序启动参数 -D是用来做什么的呢?

    去查询了一下官方解释:

    Set a system property value. If value is a string that contains spaces, you must enclose the string in double quotes:

    java -Dfoo="some string" SomeClass

    也就是说-D是用来在启动一个java程序时设http://www.devze.com置系统属性值的。如果该值是一个字符串且包含空格,那么需要包在一对双引号中。

    何为系统属性值呢?也就是在System类中通过getProperties()得到的一串系统属性。

    下面我们来写个测试方法就知道了

    /**
     * @author lmfeng
     * @date 2018/05/30
     */
    public class SystemProp编程erty {
     
        public static void main(String[] args){
            System.out.print(System.getProperty("dubbo.token"));
        }
    }
    

    在运行改程序时加上JVM参数-Ddubbo.token=“666” 或者 -Ddubbo.toandroidken=666,那么运行之后你可以看到控制台输出了666!

    一点值得注意的是,需要设置的是JV开发者_Js入门M参数而不是program参数,注意看下图

    java -D参数设置系统属性无效问题及解决

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜