java的System.getProperty,方法可以获取的值

java.version

Java 运行时环境版本

java.vendor

Java 运行时环境供应商

java.vendor.url

Java 供应商的 URL

java.home

Java 安装目录

java.vm.specification.version

Java 虚拟机规范版本

java.vm.specification.vendor

Java 虚拟机规范供应商

java.vm.specification.name

Java 虚拟机规范名称

java.vm.version

Java 虚拟机实现版本

java.vm.vendor

Java 虚拟机实现供应商

java.vm.name

Java 虚拟机实现名称

java.specification.version

Java 运行时环境规范版本

java.specification.vendor

Java 运行时环境规范供应商

java.specification.name

Java 运行时环境规范名称

java.class.version

Java 类格式版本号

java.class.path

Java 类路径

java.library.path

加载库时搜索的路径列表

java.io.tmpdir

默认的临时文件路径

java.compiler

要使用的 JIT 编译器的名称

java.ext.dirs

一个或多个扩展目录的路径

os.name

操作系统的名称

os.arch

操作系统的架构

os.version

操作系统的版本

file.separator

文件分隔符(在 UNIX 系统中是“/”)

path.separator

路径分隔符(在 UNIX 系统中是“:”)

line.separator

行分隔符(在 UNIX 系统中是“/n”)

user.name

用户的账户名称

user.home

用户的主目录

user.dir

用户的当前工作目录

获取的代码示例:

[java]view plaincopy

  1. public class SystemProperty {
  2. public static void main(String args[]) {
  3. System.out.println("java_vendor:" + System.getProperty("java.vendor"));
  4. System.out.println("java_vendor_url:"
  5. + System.getProperty("java.vendor.url"));
  6. System.out.println("java_home:" + System.getProperty("java.home"));
  7. System.out.println("java_class_version:"
  8. + System.getProperty("java.class.version"));
  9. System.out.println("java_class_path:"
  10. + System.getProperty("java.class.path"));
  11. System.out.println("os_name:" + System.getProperty("os.name"));
  12. System.out.println("os_arch:" + System.getProperty("os.arch"));
  13. System.out.println("os_version:" + System.getProperty("os.version"));
  14. System.out.println("user_name:" + System.getProperty("user.name"));
  15. System.out.println("user_home:" + System.getProperty("user.home"));
  16. System.out.println("user_dir:" + System.getProperty("user.dir"));
  17. System.out.println("java_vm_specification_version:"
  18. + System.getProperty("java.vm.specification.version"));
  19. System.out.println("java_vm_specification_vendor:"
  20. + System.getProperty("java.vm.specification.vendor"));
  21. System.out.println("java_vm_specification_name:"
  22. + System.getProperty("java.vm.specification.name"));
  23. System.out.println("java_vm_version:"
  24. + System.getProperty("java.vm.version"));
  25. System.out.println("java_vm_vendor:"
  26. + System.getProperty("java.vm.vendor"));
  27. System.out
  28. .println("java_vm_name:" + System.getProperty("java.vm.name"));
  29. System.out.println("java_ext_dirs:"
  30. + System.getProperty("java.ext.dirs"));
  31. System.out.println("file_separator:"
  32. + System.getProperty("file.separator"));
  33. System.out.println("path_separator:"
  34. + System.getProperty("path.separator"));
  35. System.out.println("line_separator:"
  36. + System.getProperty("line.separator"));
  37. }

=======================================================================

System.setProperties( "proxySet", "true" );

System.setProperties( "proxyHost", "192.168.31.117" );

System.setProperties( "proxyPort", "80" );

这里的proxySet,proxyHost,proxyPort等等这些系统的属性名称是从哪里知道的?

  ——通过JDK文档中对java.lang.system的static Properties getProperties()方法的介绍,可以获知所有可用属性的含义。

  ——根本没有proxySet,proxyHost和proxyPort,这些是user defined property,那么用户定义的属性如何起作用的?

***JavaVM实现Proxy的方法***

要想让java应用使用代理连接网络,只需要设置一下system properties,有两种方法可以设置,一是直接在java代码里面调用System.setProperty()方法,还有就是通过-D选项添加java虚拟机参数,如 java -Dhttp.proxyHost=192.168.254.254 -Dhttp.proxyPort=9000 ,当然也可以指定不使用代理访问的网站或者主机,http.nonProxyHosts属性指定不使用代理访问的域。示例如下所示:

System.setProperty("http.proxyHost", "192.168.254.254");

System.setProperty("http.proxyPort", "9000");

System.setProperty("http.nonProxyHosts", "localhost");

如果你想使用ftp代理可以以相同的方式设定如下系统属性:ftp.proxyHost, ftp.proxyPort, and 使用socket代理可以设定socks.ProxyHost socks.ProxyPort也可以使用如下代码:

  1. Properties sysProperties = System.getProperties();
  2. //Specify proxy settings
  3. sysProperties.put("proxyHost", "myhost");//myhost设置为代理的地址
  4. sysProperties.put("proxyPort", "myport");//myport设置为代理端口
  5. sysProperties.put("proxySet", "true");

补充:

Java网络代理服务器环境变量

Java 是一种面向对象的网络语言,Java 的JVM已经提供了可以设置与网络代理服务相关的环境变量,这些环境变量是按照键值名(Key)和值(Value)实现配置的。而这些环境变量与应用程序息息相关。比如:大家比较熟悉的classpath环境变量等。从表面上看,JVM的环境变量有点类似Windows的*.ini,该环境变量是按照纯文本的格式存储的。

Http 代理服务是目前Internet环境下,应有最为广泛的代理服务。一般的网络浏览器,如:微软的IE和网景的Netscape都提供对Http代理服务的配置选项。在Java应用程序中,对Http代理服务的使用是通过配置Java 虚拟机的JVM的环境变量来实现的。针对http代理服务,Java 虚拟机提供了如下环境变量:

http.proxySet 该环境变量用以设置应用程序是否使用http协议代理,值为True/False。

注意:在设置环境变量时候,变量值True/False是按照字符串的形式进行设置的。

http.proxyHost 该环境变量用以设置应用程序所使用的http协议代理服务器的主机,比如:我们使用 http://172.14.10.34 作为http的代理服务器主机。

http.proxyport 该环境变量用以设置应用程序所使用的http协议代理服务器的主机的端口号。比如:我们使用 http://172.14.10.34 的8080端口作为http的代理服务器。

如:将Java应用程序的Http代理服务器设为http://172.14.10.34,端口为8080,可以使用如下代码:

String host="http://172.14.10.34";

String port="8080";

System.setproperty("http.proxySet", "true");

System.setproperty("http.proxyHost", host);

System.setproperty("http.proxyport", port);

一旦设置好了Java应用程序的http代理环境变量,Java应用程序就可以通过http代理服务透明地访问与http相关的网络资源。