System.getProperty()方法获取系统变量
来自我的CSDN博客
今天在阅读JDBC的DriverManager类源码时,看到了这么一句代码:
System.getProperty("jdbc.drivers");
getProperty()这个方法是获取指定键指示的系统属性的,也就是说上面的代码获取的是jdbc.drivers这个属性。我写了个测试测试输出,发现是null值。于是就打算看看系统属性中有没有jdbc.drivers这个值。
查看了一下java api中的getProperty()这个方法,后通过getProperties()找到了能获取到的属性,如下图所示:
但是居然没有我的jdbc.drivers,于是本着负责的态度,我决定将所有的属性都输出看一看。以下是通过System.getPropertys()和System.getProperty()变量所有系统属性的方法。
@Test
public void test(){
//获取所有的属性
Properties properties = System.getProperties();
//遍历所有的属性
for (String key : properties.stringPropertyNames()) {
//输出对应的键和值
System.out.println(key + "=" + properties.getProperty(key));
}
}
对应的结果如下:
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=C:\javaweb\jdk1.8.0_101_64\jre\bin
java.vm.vendor=Oracle Corporation
java.vendor.url=http://java.oracle.com/
path.separator=;
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg=sun.io user.script= user.country=CN
sun.java.launcher=SUN_STANDARD sun.os.patch.level=
java.vm.specification.name=Java Virtual Machine Specification
user.dir=E:\7.ProjectCodeSource\jdbc
java.runtime.version=1.8.0_101-b13
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\javaweb\jdk1.8.0_101_64\jre\lib\endorsed
os.arch=amd64 java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp
line.separator=java.vm.specification.vendor=Oracle Corporation user.variant=
os.name=Windows 10 sun.jnu.encoding=GBK
java.library.path=C:\javaweb\jdk1.8.0_101_64\bin;
java.specification.name=Java Platform API Specification
java.class.version=52.0
sun.management.compiler=HotSpot 64-Bit Tiered
Compilers os.version=10.0
user.home=C:\Users\Administrator
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=UTF-8
java.specification.version=1.8
user.name=Administrator
java.class.path=E:\7.ProjectCodeSource\jdbc\target\test-classes;
java.vm.specification.version=1.8 sun.arch.data.model=64
java.home=C:\javaweb\jdk1.8.0_101_64\jre
sun.java.command=org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
-version 3 -port 57975 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader
-loaderpluginname org.eclipse.jdt.junit4.runtime -test com.jim.jdbc.JDBCTest:test java.specification.vendor=Oracle
Corporation user.language=zh awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.8.0_101
java.ext.dirs=C:\javaweb\jdk1.8.0_101_64\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
sun.boot.class.path=C:\javaweb\jdk1.8.0_101_64\jre\lib\resources.jar;C:\javaweb\jdk1.8.0_101_64\jre\lib\rt.jar;C:\javaweb\jdk1.8.0_101_64\jre\lib\sunrsasign.jar;
java.vendor=Oracle Corporation
file.separator=
java.vendor.url.bug=http://bugreport.sun.com/bugreport/
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.desktop=windows
sun.cpu.isalist=amd64
输出的东西也太乱了,我就加了一句判断看有没有jdbc.drivers这个属性。代码如下:
@Test
public void test(){
//获取所有的属性
Properties properties = System.getProperties();
//为了看看系统的属性有几个,加了一个计数器
int count = 0;
//遍历所有的属性
for (String key : properties.stringPropertyNames()) {
System.out.println(key + "=" + properties.getProperty(key));
count++;
if (key.equalsIgnoreCase("jdbc.drivers")){
System.out.println("YES");
return ;
}
}
System.out.println(count);
}
结果是根本没有jdbc.drivers这个属性,系统的属性有57个,比java api中列出来的要多,所以如果你的属性不再java api的所列出的列表中,不要灰心,可以使用上面的代码判断一下。
我后来看了java api之后,加了一句代码在方法最前面:
System.setProperty("jdbc.drivers","aaa.bbb.ccc");
结果就显示有了。也就是说,DriverManager中的jdbc.drivers这个系统属性不是本来系统自带的,需要用户自己设定采用。如果不设定,则为null。这样看来,一切都说通了。
来自我的CSDN博客
System.getProperty()方法获取系统变量的更多相关文章
- Java System.getProperty()方法获取系统信息
用 System.getProperty()方法能获取到的系统信息: java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.u ...
- System.getProperty()方法获取大全
System.out.println("java版本号:" + System.getProperty("java.version")); // java版本号 ...
- 获取当前应用的系统路径工具类和java的System.getProperty()方法介绍
java的System.getProperty()方法可以获取的值,如下: 对于Java程序,无论是未打包的还是打包的JAR或WAR文件,有时候都需要获取它运行所在目录信息,如何做到这一点呢? /** ...
- 【java编程】使用System.getProperty方法,如何配置JVM系统属性
转载:https://www.cnblogs.com/acm-bingzi/p/6673823.html很多时候我们需要在项目中读取外部属性文件,用到了System.getProperty(" ...
- 使用System.getProperty方法,如何配置JVM系统属性
原创文章,欢迎转载,转载请注明出处! 很多时候我们需要在项目中读取外部属性文件,用到了System.getProperty("")方法.这个方法需要配置JVM系统属性,那么如何配置 ...
- 使用System.getProperty方法,如何配置JVM系统属性 (转载)
很多时候需要在项目中读取外部属性文件,用到了System.getProperty("")方法.这个方法需要配置JVM系统属性,那么如何配置呢? 那就是使用java -D 配置系统属 ...
- java中获取系统变量
System.getProperty("java.version") 用来获取系统变量.getProperty()这个方法是获取指定键指示的系统属性的.以下是通过System.ge ...
- java 获取系统变量(环境变量和设置变量)
前言 环境变量这个概念不陌生, 就是操作系统的环境变量. 系统变量就是java本身维护的变量. 通过 System.getProperty 的方式获取. 对于不同的操作系统来说, 环境变量的处理可能会 ...
- java 获取系统变量(环境变量和环境变量)
前言 环境变量这个概念不陌生, 就是操作系统的环境变量. 系统变量就是java本身维护的变量. 通过 System.getProperty 的方式获取. 对于不同的操作系统来说. 环境变量的处理可能会 ...
随机推荐
- html-webpack-plugin的使用
使用前第一步:npm install 安装html-webpack-plugin --save--dev || --save (tips:--save--dev跟--save最大的区别就是--dev ...
- CSS实现自适应不同大小屏幕的背景大图
在网上搜了好多demo:可总有这样那样的一些小瑕疵,试过几次后发现这样效果是最好的 html: <div class='bg'> <img src="image/bk02. ...
- php图片上传服务器
原理是把图片上传到服务器的某个目录,然后在把他的名字存入数据库,或者不需要数据库这部分也行.读取的时候直接读取名字. HTML提交表格 <form method="post" ...
- asp.net 自定义的模板方法接口通用类型
本来想写这个帖子已经很久了,但是公司事情多,做着做着就忘记了.公司因为需要做接口,而且用的还是asp.net的老框架,使用Handler来做,没得办法,自己照着MVC写了一个通过的接口操作模板. 上送 ...
- div内长串数字或字母不断行处理
比如: <div>1111tryrt645645rt4554111112324353453454364</div> <div>qwewretrytuytuiyiuo ...
- R学习笔记 第五篇:字符串操作
文本数据存储在字符向量中,字符向量的每个元素都是字符串,而非单独的字符.在R中,可以使用双引号,或单引号表示字符,函数nchar用于获得字符串中的字符数量: > s='read' > nc ...
- 2017年php面试题汇总
1.http状态码 200 这个没有什么好说的,是代表请求被正常的处理成功了 302 代表临时重定向 400 400表示请求报文中存在语法错误.需要修改后再次发送 403 表明请求访问的资源被拒绝了. ...
- pandas选择数据-【老鱼学pandas】
选择列 根据列名来选择某列的数据 import pandas as pd import numpy as np dates = pd.date_range("2017-01-08" ...
- 这应该是目前最快速有效的ASP.NET Core学习方式(视频)
ASP.NET Core都2.0了,它的普及还是不太好.作为一个.NET的老司机,我觉得.NET Core给我带来了很多的乐趣.Linux, Docker, CloudNative,MicroServ ...
- webpack 3.X学习之图片处理
CSS中图片处理 在src目录下新建一个images目录,把图片放入images文件夹中:在index.html文件中增加一个div标签: /src/index.html: <div id=&q ...