有人可以帮助我如何从环境变量中获取值吗?
String[] extensions = {"xml", "java", "dat"};
目前我正在传递xml,java和dat文件。现在我想从环境变量中获取这些值。
我试过了:
String[] extensions = {System.getenv("LIST")};
但我每次都会得到空值。
答案 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)
对于PATH
和CLASSPATH
变量,您需要为它们发现传统的分隔符。
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
。
类路径有一个更可靠的替代方案。同一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:dat”。
检索此值后
(试试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 ...