【问题标题】:String[] value from Environment Variable来自环境变量的字符串 [] 值
【发布时间】:2013-06-11 09:08:07
【问题描述】:

谁能帮助我如何从环境变量中获取值?

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

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

我试过了:

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

但我每次都得到空值。

【问题讨论】:

  • 你必须有环境变量才能获取它们。
  • 可能是您将这些变量提供给程序的方式存在问题(即它们不可用)。
  • 如果您使用-D 开关设置属性,请改用:System.getProperty("LIST");

标签: java environment-variables


【解决方案1】:

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.
}

【讨论】:

  • 谢谢 Stine..我正在尝试复制 kodejava.org/examples/359.html 但我在这里遇到错误:Collection files = FileUtils.listFiles(root, env, recursive);
【解决方案2】:

为单个环境变量返回的值将始终是一个字符串。 在您的情况下,字符串可能如下所示:“xml:java:dat”。 一旦你检索到这个值 (试试System.getenv("DESIRED_ENVIRONMENT_VARIABLE_NAME_HERE")) 您需要将其解析为单独的值。 尝试使用 String.split 方法(可能是stringVariableName.split(":"))。

拆分后,您将拥有字符串数组中的值(例如:String[] values)。

【讨论】:

    【解决方案3】:

    对于PATHCLASSPATH 变量,您需要发现它们的常规分隔符。

    路径

    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 教程页面上还列出了系统属性“java.class.path”。这比环境变量更可靠,因为它考虑了java -cp *path* 调用和带有Class-Path 清单的JAR 文件。所以,换行

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

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

    【讨论】:

      【解决方案4】:

      Java 要获取环境变量,必须有一个环境变量才能获取。由于它们来自环境,如何设置环境变量取决于环境(操作系统)。

      您没有指明您使用的是哪个操作系统。如果环境是用于启动 JVM 的 POSIX exec,则可以为其中一个 exec 函数赋予一组环境值。

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

       NAME=value java ...
      

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

       NAME=value
       export NAME
       java ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-16
        • 2015-04-10
        • 2019-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多