【问题标题】:Getting the getenv to work in Windows using Java使用 Java 让 getenv 在 Windows 中工作
【发布时间】:2013-09-24 08:25:12
【问题描述】:

您好,我一直在努力让“getenv”工作。它将继续返回“线程“主”java.lang.UnsupportedOperationException中的异常”。我一直在阅读有关 ProcessBuilder 的信息,但根据下面的代码,我不太确定如何以及在何处实现它。

我真正想做的是,在满足条件时设置一个变量(“REGRESSION_STATUS”,“UPDATED”)和(“REGRESSION_STATUS”,“OUTDATED”),并返回值“UPDATED”和“OUTDATED” " 在 Windows 中通过 cmd 执行时视情况而定。

public static void main(String[] args) throws ClassNotFoundException {
    String run_type = args[0];
    String inputFile = args[1];

    System.out.println("RUN TYPE = "  + run_type);
    System.out.println("INPUT FILE = "  + inputFile);

    MiniData data = getValue(run_type, "LEM");

    if(run_type.equals("BUILD")){
        System.out.println("Script = " + data.getScript());
    }
    else if (run_type.equals("DEPLOY")){
        System.out.println("Script = " + data.getScript());
    }
    else if (run_type.equals("REGRESSION")){
        System.out.println("Runtime Version (DB) = " + data.getRuntime());
        String file_name =inputFile;

        if(data.getRuntime().equals(getRuntimeVersion(file_name)))
        {
            System.out.println("The version is up-to-date");
            System.getenv().put("REGRESSION_STATUS", "UPDATED");
            System.getenv().put("REGRESSION_VER", data.getRuntime());   
        }
        else 
        {
            System.out.println("This version is outdated");
            System.getenv().put("REGRESSION_STATUS", "OUTDATED");
            System.getenv().put("REGRESSION_VER", data.getRuntime() );
        }
    }
    else {
        System.out.println("You have not the correct value. Enter either BUILD/DEPLOY/REGRESSION");
    }
}   

谢谢!

【问题讨论】:

    标签: java processbuilder getenv


    【解决方案1】:

    环境变量的System.getenv() method returns an unmodifiable view。您不能像在此处那样使用它来设置环境变量。

    您可以“设置”环境变量的唯一时间是当您使用ProcessBuilder 类或Runtime.exec 方法为子进程创建环境时,但即使那样您也不会修改您的环境副本.

    【讨论】:

    • 那有什么办法可以解决我想要达到的目标吗?
    • 如果一个进程设置了一个环境变量,它只会影响它自己的环境和它将启动的子进程的环境。你没有产生任何孩子,那么你想达到什么目的?
    【解决方案2】:

    您必须使用 C putenv 和 JNI,Java 无法做到这一点。

    【讨论】:

      猜你喜欢
      • 2011-06-21
      • 2013-12-27
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多