今天开发过程中,发现System.getProperty("line.separator")可以支持换行跨平台,例如各平台对应的换行符如下:\r: Mac ;
\n: Unix/Linux ;\r\n: Windows或Http,为了自己的程序更好的支持跨平台,今天对System property大致研究一下,现做笔记如下,方面为了查阅。
System property 概念
在JAVA平台自身会使用一个Properties的对象来保存它自自己的配置."System"类保持了一个Properties对象,这个对象描述了当前工作环境的配置。这些配置包括当前用户,当前JVM版本及文件目录名的分隔离符等等.
与系统环境变量不同,可以将System property理解为JVM的环境变量。
初始化变量列表
System properties. The following properties are guaranteed to be defined:
index | key | value |
---|---|---|
0 | java.runtime.name | Java(TM) SE Runtime Environment |
01 | sun.boot.library.path | C:\Program Files\Java\jdk1.8.0_181\jre\bin |
02 | java.vm.version | 25.181-b13 |
03 | java.vm.vendor | Oracle Corporation |
04 | java.vendor.url | http://java.oracle.com/ |
05 | path.separator | ; |
06 | java.vm.name | Java HotSpot(TM) 64-Bit Server VM |
07 | file.encoding.pkg | sun.io |
08 | user.country | CN |
09 | user.script | |
10 | sun.java.launcher | SUN_STANDARD |
11 | sun.os.patch.level | |
12 | test | 123 |
13 | java.vm.specification.name | Java Virtual Machine Specification |
14 | user.dir | D:\sparrow\sparrow-shell |
15 | java.runtime.version | 1.8.0_181-b13 |
16 | java.awt.graphicsenv | sun.awt.Win32GraphicsEnvironment |
17 | java.endorsed.dirs | C:\Program Files\Java\jdk1.8.0_181\jre\lib\endorsed |
18 | os.arch | amd64 |
19 | java.io.tmpdir | C:\Users\LIZHI~1.ZHA\AppData\Local\Temp\ |
20 | line.separator | \r\n |
21 | java.vm.specification.vendor | Oracle Corporation |
22 | user.variant | |
23 | os.name | Windows 10 |
24 | sun.jnu.encoding | GBK |
25 | java.library.path | C:\Program Files\Java\jdk1.8.0_181\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;c:\Program Files\Git\cmd;D:\Go\bin;C:\Program Files\nodejs;C:\Users\lizhi.zhang01\AppData\Local\Microsoft\WindowsApps;D:\apache-maven-3.5.4-bin\apache-maven-3.5.4\bin;C:\Program Files\Git\bin;C:\Program Files\Java\jdk1.8.0_181\bin;D:\go-work-space\bin;D:\Go\bin;D:\apache-ant-1.9.13\bin;D:\Gradle\gradle-4.10\bin;C:\Users\lizhi.zhang01\AppData\Roaming\npm;;. |
26 | java.specification.name | Java Platform API Specification |
27 | java.class.version | 52.0 |
28 | sun.management.compiler | HotSpot 64-Bit Tiered Compilers |
29 | os.version | 10.0 |
30 | user.home | C:\Users\lizhi.zhang01 |
31 | user.timezone | |
32 | java.awt.printerjob | sun.awt.windows.WPrinterJob |
33 | file.encoding | UTF-8 |
34 | java.specification.version | 1.8 |
35 | java.class.path | C:\Program Files\Java\jdk1.8.0_181\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_181\jre |
36 | user.name | lizhi.zhang01 |
37 | java.vm.specification.version | 1.8 |
38 | sun.java.command | com.sparrow.jdk.os.SystemProperty 1 2 3 |
39 | java.home | C:\Program Files\Java\jdk1.8.0_181\jre |
40 | sun.arch.data.model | 64 |
41 | user.language | zh |
42 | java.specification.vendor | Oracle Corporation |
43 | awt.toolkit | sun.awt.windows.WToolkit |
44 | java.vm.info | mixed mode |
45 | java.version | 1.8.0_181 |
46 | java.ext.dirs | C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext;C:\Windows\Sun\Java\lib\ext |
47 | sun.boot.class.path | C:\Program Files\Java\jdk1.8.0_181\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_181\jre\classes;C:\Users\lizhi.zhang01.IntelliJIdea2018.1\system\captureAgent\debugger-agent-storage.jar |
48 | java.vendor | Oracle Corporation |
49 | file.separator | \ |
50 | java.vendor.url.bug | http://bugreport.sun.com/bugreport/ |
51 | sun.io.unicode.encoding | UnicodeLittle |
52 | sun.cpu.endian | little |
53 | sun.desktop | windows |
54 | sun.cpu.isalist | amd64 |
- 由JAVA命令SET PROPERTY
获取系统配置属性及对应的值
public static void main(String[] args) {
// testThreadPoolExecutor();
Properties pro= System.getProperties();
Enumeration<Object> enum1= pro.keys();
while (enum1.hasMoreElements()) {
Object key=enum1.nextElement();
System.out.println("key="+key+" valuse="+pro.get(key));
}
输出结果如下:
key=java.runtime.name valuse=Java(TM) SE Runtime Environment
key=sun.boot.library.path valuse=D:\Program Files\Java\jre8\bin
key=java.vm.version valuse=25.0-b70
key=java.vm.vendor valuse=Oracle Corporation
key=java.vendor.url valuse=http://java.oracle.com/
key=path.separator valuse=;
key=java.vm.name valuse=Java HotSpot(TM) 64-Bit Server VM
key=file.encoding.pkg valuse=sun.io
key=user.country valuse=CN
key=user.script valuse=
key=sun.java.launcher valuse=SUN_STANDARD
key=sun.os.patch.level valuse=
key=java.vm.specification.name valuse=Java Virtual Machine Specification
key=user.dir valuse=D:\worksplace\shenzhou-gaotie\j2seTest
key=java.runtime.version valuse=1.8.0-b132
key=java.awt.graphicsenv valuse=sun.awt.Win32GraphicsEnvironment
key=java.endorsed.dirs valuse=D:\Program Files\Java\jre8\lib\endorsed
key=os.arch valuse=amd64
key=java.io.tmpdir valuse=C:\Users\gavin\AppData\Local\Temp\
key=line.separator valuse=
key=java.vm.specification.vendor valuse=Oracle Corporation
key=user.variant valuse=
key=os.name valuse=Windows 8.1
key=sun.jnu.encoding valuse=GBK
key=java.library.path valuse=D:\Program Files\Java\jre8\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;D:\drive\oracle;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;D:\Program Files\VisualSVN Server\bin;D:\Program Files\Java\jdk1.8.0\bin;D:\Program Files\Java\jdk1.8.0\jre\bin;:D:\Program Files\Java\apache-tomcat-8.5.14\lib;D:\Program Files\Java\apache-tomcat-8.5.14\bin;D:\Program Files\TortoiseSVN\bin;D:\Users\android_studio_sdk\platform-tools;D:\Users\android_studio_sdk\tools;C:\Users\jingx\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9\gradle-3.3\bin;d:\Program Files\IDM Computer Solutions\UltraEdit;C:\WINDOWS\System32\OpenSSH\;C:\Users\gavin\AppData\Local\Microsoft\WindowsApps;;.
key=java.specification.name valuse=Java Platform API Specification
key=java.class.version valuse=52.0
key=sun.management.compiler valuse=HotSpot 64-Bit Tiered Compilers
key=os.version valuse=6.3
key=user.home valuse=C:\Users\gavin
key=user.timezone valuse=
key=java.awt.printerjob valuse=sun.awt.windows.WPrinterJob
key=file.encoding valuse=UTF-8
key=java.specification.version valuse=1.8
key=java.class.path valuse=D:\worksplace\shenzhou-gaotie\j2seTest\bin
key=user.name valuse=gavin
key=java.vm.specification.version valuse=1.8
key=sun.java.command valuse=com.gavin.thread.MyThreadPool
key=java.home valuse=D:\Program Files\Java\jre8
key=sun.arch.data.model valuse=64
key=user.language valuse=zh
key=java.specification.vendor valuse=Oracle Corporation
key=awt.toolkit valuse=sun.awt.windows.WToolkit
key=java.vm.info valuse=mixed mode
key=java.version valuse=1.8.0
key=java.ext.dirs valuse=D:\Program Files\Java\jre8\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
key=sun.boot.class.path valuse=D:\Program Files\Java\jre8\lib\resources.jar;D:\Program Files\Java\jre8\lib\rt.jar;D:\Program Files\Java\jre8\lib\sunrsasign.jar;D:\Program Files\Java\jre8\lib\jsse.jar;D:\Program Files\Java\jre8\lib\jce.jar;D:\Program Files\Java\jre8\lib\charsets.jar;D:\Program Files\Java\jre8\lib\jfr.jar;D:\Program Files\Java\jre8\classes
key=java.vendor valuse=Oracle Corporation
key=file.separator valuse=\
key=java.vendor.url.bug valuse=http://bugreport.sun.com/bugreport/
key=sun.io.unicode.encoding valuse=UnicodeLittle
key=sun.cpu.endian valuse=little
key=sun.desktop valuse=windows
key=sun.cpu.isalist valuse=amd64
自定义属性
用法: java [-options] class [args...]
(执行类)
或 java [-options] -jar jarfile [args...]
(执行 jar 文件)
其中选项包括:
-d32 使用 32 位数据模型 (如果可用)
-d64 使用 64 位数据模型 (如果可用)
-server 选择 "server" VM
默认 VM 是 server.
-cp <目录和 zip/jar 文件的类搜索路径>
-classpath <目录和 zip/jar 文件的类搜索路径>
用 ; 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
-D<名称>=<值>
设置系统属性
-verbose:[class|gc|jni]
启用详细输出
-version 输出产品版本并退出
-version:<值>
警告: 此功能已过时, 将在
未来发行版中删除。
需要指定的版本才能运行
-showversion 输出产品版本并继续
-jre-restrict-search | -no-jre-restrict-search
警告: 此功能已过时, 将在
未来发行版中删除。
在版本搜索中包括/排除用户专用 JRE
-? -help 输出此帮助消息
-X 输出非标准选项的帮助
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
按指定的粒度启用断言
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
禁用具有指定粒度的断言
-esa | -enablesystemassertions
启用系统断言
-dsa | -disablesystemassertions
禁用系统断言
-agentlib:<libname>[=<选项>]
加载本机代理库 <libname>, 例如 -agentlib:hprof
另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
-agentpath:<pathname>[=<选项>]
按完整路径名加载本机代理库
-javaagent:<jarpath>[=<选项>]
加载 Java 编程语言代理, 请参阅 java.lang.instrument
-splash:<imagepath>
示例代码
-D<名称>=<值>
设置系统属性
java -Dtest=1234 com.sparrow.jdk.os.SystemProperty 1 2 3 4
/**
* java -Dtest=1234 com.sparrow.jdk.os.SystemProperty 1 2 3 4
*/
public class SystemProperty {
public static void main(String[] args) {
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
System.out.println(System.getProperty("test"));
System.out.println(System.getProperty("user.home"));
}
}
通过System.setProperty方法设置
System.setProperty("test","test");