环境变量的String []值

时间:2013-06-14 16:30:10

标签: java environment-variables

有人可以帮助我如何从环境变量中获取值吗?

String[] extensions = {"xml", "java", "dat"};

目前我正在传递xml,java和dat文件。现在我想从环境变量中获取这些值。

我试过了:

String[] extensions = {System.getenv("LIST")};

但我每次都会得到空值。

4 个答案:

答案 0 :(得分:3)

System.getenv()会返回一张地图。从那里你可以迭代地图并放入一个数组。

Map<String, String> env = System.getenv();
// allocate an array with env.size()
for (String envName : env.keySet()) {
    // add env.get(envName) to array.
}

答案 1 :(得分:2)

对于PATHCLASSPATH变量,您需要为它们发现传统的分隔符。

PATH

String path = System.getEnv("PATH");
// See http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html
String[] files = path.split(System.getProperty("path.separator"));
List<String> unescapedFiles = new ArrayList<>();
for (String file: files) {
    // Exercise for the reader
    String unquotedFile = ...;
    String javaSlashedFile = ...;
    unescapedFiles.add(javaSlashedFile);
}
return unescapedFiles;

循环应采用"C:\Program Files\perl\perl.exe"等文件名,并将其转换为C:/Program Files/perl/perl.exe

CLASSPATH

类路径有一个更可靠的替代方案。同一Java Tutorial页面上还列出了系统属性“java.class.path”。这比环境变量更可靠,因为它考虑了java -cp *path*调用和带有Class-Path清单的JAR文件。所以,替换

String path = System.getEnv("PATH");

String classPath = System.getProperty("java.class.path");

答案 2 :(得分:0)

单个环境变量返回的值始终为字符串。 在您的情况下,字符串可能如下所示:“xml:java:d​​at”。 检索此值后 (试试System.getenv("DESIRED_ENVIRONMENT_VARIABLE_NAME_HERE")) 您需要将其解析为单个值。 尝试使用String.split方法(也许stringVariableName.split(":"))。

分割后,您将获得String数组中的值(例如:String[] values)。

答案 3 :(得分:0)

对于Java来获取环境变量,必须有一个环境变量来获取它。由于它们来自环境,因此设置环境变量的如何依赖于环境(操作系统)。

您没有指明您正在使用的操作系统。如果环境是POSIX exec来启动JVM,则可以为exec函数之一提供一组环境值的值。

对于Unix shell,您可以在执行JVM的语句中设置值:

 NAME=value java ...

或在执行JVM之前在shell脚本中导出它们:

 NAME=value
 export NAME
 java ...