java中获取环境变量

分为获取java自身的一些环境变量和和操作系统相关的环境变量。

  • 获取JVM相关的一些变量

在运行时设置一个环境变量 debug 为 true: java -Ddebug=true YourClass
在程序中设置一个环境变量 debug 为 true: System.setProperty( "debug", "true" );
获取一个环境变量 debug : String debug = System.getProperty( "debug" );

下表中列出了一部分环境变量,这些是 Java 已经定义好的,可以在程序中通过 System.getProperty( "key" ) 来获取,更多的环境变量请参阅 JDK 文档。

属性名 描 述
java.version Java 运行时版本
java.home Java 的安装目录
java.class.version Java 类格式的版本号
java.class.path Java 类的查找路径
java.io.tmpdir 默认的临时目录
java.compiler Java 所使用的及时编译器
java.ext.dirs Java 扩展包的目录
os.name 操作系统的名称
os.arch 操作系统的体系结构
os.version 操作系统的版本
file.separator 文件分隔符(Unix 下为‘/‘)
path.separator 路径分隔符(Unix 下为‘:‘)
line.separator 换行符(Unix 下为‘/n‘)
user.name 用户帐号名
user.home 用户目录
user.dir 用户当前的工作目录

其他具体的可以参考后面的代码实例程序。

  • 取得操作系统的环境变量

注意,这次是获取操作系统的环境变量,而不是获取JVM相关的一些变量。
  也许是为了营造JVM就是操作系统平台的气氛,抑或是为了强调Java的平台无关性,不知几时起Java已经把System.getenv(String)函数废弃了。所以一般来说Java只能获取它自己定义的一些变量,而无法与操作系统的环境变量交互,只能在运行靠java的“-D”参数来设置要传递给它的一些变量。
  所以唯一的办法只能先判断操作系统,然后用操作系统的命令来调出环境变量列表,设法获得该输出列表。

  • 代码实现
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class SystemValue {
 /**
  * 使用System获取系统相关的值
  */
 public static void getSystemProperties() {
  Properties pp = System.getProperties();
  System.out.println("System‘s Properties:");
  System.out.println();
  java.util.Enumeration en = pp.propertyNames();
  while (en.hasMoreElements()) {
   String nextE = (String) en.nextElement();
   System.out.print(nextE + "=" + pp.getProperty(nextE));
   System.out.println();
  }
 }

 public static void getCustomProperties(String key) {
  Map map = getEnv();
  System.out.println(key + "=" + map.get(key));
 }

 public static Map getEnv() {
  Map map = new HashMap();
  Process p = null;
  Runtime r = Runtime.getRuntime();
  String OS = System.getProperty("os.name").toLowerCase();
  System.out.println("OS="+OS);
  try {
   if (OS.indexOf("windows 9") > -1) {
    p = r.exec("command.com /c set");
   } else if ((OS.indexOf("nt") > -1)
     || (OS.indexOf("windows 20") > -1)
     || (OS.indexOf("windows xp") > -1)) {
    p = r.exec("cmd.exe /c set");
   } else {
    // Unix
    p = r.exec("env");
   }
   BufferedReader br = new BufferedReader(new InputStreamReader(p
     .getInputStream()));
   String line;
   while ((line = br.readLine()) != null) {
    String[] str = line.split("=");
    map.put(str[0], str[1]);
   }
  } catch (IOException ioe) {
   ioe.printStackTrace();
  }
  return map;
 }

 public static void main(String[] args) {
  // getSystemProperties();
  getCustomProperties("JAVA_HOME");
 }
}

  java中获取环境变量

时间: 2024-10-10 14:54:59

java中获取环境变量的相关文章

java中的环境变量的配置

作为初学者来说配置环境变量是初学者的第一步: 下载并安装JDK1.60(或以上版本),假设安装在X:\jdk150目录下 打开:控制面板 系统 高级 环境变量 变量名 变量值 path .;X:\jdk140\bin ClassPath .;X:\jdk140\lib\tools.jar; .;X:\jdk140\lib\dt.jar; JAVA_HOME X:\jdk140 path 路径是为了保证在任何路径下都能找到,使用java的指令. 配置ClassPath路径是为了虚拟机能够找到我们要

java中JDK环境变量的配置

JDK的配置在 window中的配置,我的电脑-->属性-->高级系统设置-->高级-->环境变量中配置,具体下图 用户变量是指此配置在当前用户中生效 系统变量是指此配置在当前系统中生效 JDK需要配置的环境变量包括 JAVA_HOME:配置到jdk的安装目录 PATH:配置为%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;"或者是直接"%JAVA_HOME%\bin; CLASSPATH:%JAVA_HOME%\lib\dt.jar;%

深入理解Java中配置环境变量

配置的目的: 本来只在安装JDK的bin目下能运行java.exe,javac.exe,jar.exe,javadoc.exe等Java开发工具包命令,我们现在想让在所有目录下都能运行这些命令. 配置的解决途径: 将这个目录放在windows的环境变量path中即可 找所需命令的过程: 如果想运行javac.exe命令,先在自己的文件夹里面找有没有这个,没有就去电脑的path里面找 通俗理解: 配置classpath的过程就像我们把钱存在银行的过程,然后在世界各地我们要用的时候直接从银行取就好.

JAVA中的环境变量配置 PATH CLASSPATH

1.CLASSPATH是什么?它的作用是什么? 首先,classpath 是javac编译器的一个环境变量.它的作用与import.package关键字有关.当你写下improt java.util.*时,编译器面对import关键字时,就知道你要引入java.util这个package中的类:但是编译器如何知道你把这个package放在哪里了呢?所以你首先得告诉编译器这个package的所在位置:如何告诉它呢?就是设置CLASSPATH啦 :) 如果java.util这个package在c:/

java中获取系统属性以及环境变量

java中获取系统属性以及环境变量 System.getEnv()和System.getProperties()的差别 从概念上讲,系统属性 和环境变量 都是名称与值之间的映射.两种机制都能用来将用户定义的信息传递给 Java 进程.环境变量产生很多其它的全局效应,由于它们不仅对Java 子进程可见,并且对于定义它们的进程的全部子进程都是可见的.在不同的操作系统上,它们的语义有细微的区别,比方,不区分大写和小写.由于这些原因,环境变量更可能有意料不到的副作用.最好在可能的地方使用系统属性.环境变

java调用python的惨痛史(无法获取环境变量)

环境:java,was,python2.6,红帽linux,oracle,python用cx_Oracle        事情是这样的,有个需求,需要对数据库进行处理,简单说就是把数据取出来,用python使用外部传参做一个处理,再写回到数据库.如果使用java直接搞的话需要绕很大一个圈,比较麻烦,用python的话就很简单了,于是就有了下面的故事,希望和我遇到同样问题的同学能对你们有一些帮助,少绕一些圈子,java和python功能开发都很顺利,于是到了java调用python环节 大概把需要

关于Lumen / Laravel .env 文件中的环境变量是如何生效的

.env 文件包含默认环境变量,我们还可自定义其他任何有效的变量,并可通过  调用 env() 或 $_SERVER 或 $_ENV  来获取该变量.那么env()是如何加载到这些变量的呢?在Lumen的vendor/laravel/lumen-framework/src/helpers.php中,我们可以发现env函数是这样被定义的: if (! function_exists('env')) { /** * Gets the value of an environment variable.

Java开发常用环境变量配置

1. JDK变量名:JAVA_HOME变量值:D:\Program Files\Java\jdk1.7.0_25(即JDK的安装路径)配置解析:方便引用.归一原则(%JAVA_HOME%),第三方软件约定. 变量名:Path(该变量名在系统变量中已经存在)变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin配置解析:使系统在任何路径下都可以识别javac,java命令. 变量名:classpath变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib

001_java开发中配置环境变量的含义

在学习java的时候需要配置环境变量,但是为什么需要配置path和classpath这2个环境变量呢?    (1) 首先,搞起清楚path这个环境变量的作用.我们cmd到dos命令窗口的时候,输入ipconfig.        其实它调用的是存放在某个目录下面的ipconfig.exe程序,那么操作系统如何知道ipconfig程序存放在哪个目录下的呢?        这时候我们用set path的命令,就能看到很多目录,用;隔开.(如下所示)        #################