来自我的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()方法获取系统变量的更多相关文章

  1. Java System.getProperty()方法获取系统信息

    用 System.getProperty()方法能获取到的系统信息: java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.u ...

  2. System.getProperty()方法获取大全

    System.out.println("java版本号:" + System.getProperty("java.version")); // java版本号 ...

  3. 获取当前应用的系统路径工具类和java的System.getProperty()方法介绍

    java的System.getProperty()方法可以获取的值,如下: 对于Java程序,无论是未打包的还是打包的JAR或WAR文件,有时候都需要获取它运行所在目录信息,如何做到这一点呢? /** ...

  4. 【java编程】使用System.getProperty方法,如何配置JVM系统属性

    转载:https://www.cnblogs.com/acm-bingzi/p/6673823.html很多时候我们需要在项目中读取外部属性文件,用到了System.getProperty(" ...

  5. 使用System.getProperty方法,如何配置JVM系统属性

    原创文章,欢迎转载,转载请注明出处! 很多时候我们需要在项目中读取外部属性文件,用到了System.getProperty("")方法.这个方法需要配置JVM系统属性,那么如何配置 ...

  6. 使用System.getProperty方法,如何配置JVM系统属性 (转载)

    很多时候需要在项目中读取外部属性文件,用到了System.getProperty("")方法.这个方法需要配置JVM系统属性,那么如何配置呢? 那就是使用java -D 配置系统属 ...

  7. java中获取系统变量

    System.getProperty("java.version") 用来获取系统变量.getProperty()这个方法是获取指定键指示的系统属性的.以下是通过System.ge ...

  8. java 获取系统变量(环境变量和设置变量)

    前言 环境变量这个概念不陌生, 就是操作系统的环境变量. 系统变量就是java本身维护的变量. 通过 System.getProperty 的方式获取. 对于不同的操作系统来说, 环境变量的处理可能会 ...

  9. java 获取系统变量(环境变量和环境变量)

    前言 环境变量这个概念不陌生, 就是操作系统的环境变量. 系统变量就是java本身维护的变量. 通过 System.getProperty 的方式获取. 对于不同的操作系统来说. 环境变量的处理可能会 ...

随机推荐

  1. Mongoose之 SchemaTypes 数据类型

    SchemaTypes 数据类型 SchemaTypes handle definition of path defaults, validation, getters, setters, field ...

  2. C#基本功之委托和事件

    定义:委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用. 在实例化委托时,你可以将其实例与任何具有兼容签名和返回类型的方法相关联 目的:方法声明和方法实现的分离,使得程序更容易扩展 一 ...

  3. 2017年11月1日 初学者易上手的SSH-spring 01控制反转(IOC)

    这章开始学习SSH中最后的一个框架spring.Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用. 首先就来学习一下I ...

  4. .net core2 发送电子邮件封装

    在.net core2 如何发送电子邮件呢,我们选择使用自带的System.Net.Mail,下面我们将如何使用封装成一个函数,供大家参考. /// <summary> /// 发送电子邮 ...

  5. Scratch——教小孩子学编码

    教小孩子学编码 http://scratch.mit.edu/ http://v.163.com/movie/2013/3/H/I/M92389L06_M9238GTHI.html

  6. 手动安装Eclipse的PyDev插件,重启无效

    想好好学习Python,又不想只用Emeditor开发,于是想到了Eclipse.之前配置过PyDev,很久没用,就放下了.这次重新配置,遇到了不少问题总结如下: 第一,使用网址自动更新.从网上搜了很 ...

  7. [转]Oracle 创建 DBLink 的方法

    http://blog.csdn.net/davidhsing/article/details/6408770 1.如果需要创建全局 DBLink,则需要先确定用户有创建 dblink 的权限: 如果 ...

  8. Shiro SpringMVC 非maven HelloWorld

    项目用到Shiro就从网上找一些案例看看吧,结果看了很多都是maven的,没有办法就自己弄了一个.废话不多说,原理自己找开始上菜. 配置web.xml <?xml version="1 ...

  9. SAXParserFactory

    Defines a factory API that enables applications to configure and obtain a SAX based parser to parse ...

  10. Android drawText 做到文字绝对居中

    我们在android中经常会遇到自定义一些组件,因为现有的android组件是往往不能满足当下的需求的,今天就给大家介绍一下在自定义组建过程中用到的drawText不居中的问题的解决方案 首先大家看一 ...