2013-09-24 2 views
0

안녕하세요, 저는 'getenv'가 작동하도록 고심하고 있습니다. 그것은 "스레드에서의 예외"메인 "java.lang.UnsupportedOperationException"을 계속 반환합니다. ProcessBuilder에 대해 읽었지만, 아래 코드를 기반으로 구현 방법 및 위치에 대해서는 잘 모르겠습니다.getenv가 Java를 사용하여 Windows에서 작동하도록하기

내가 정확히하고 싶은 것은 조건이 충족 될 때 변수 ("REGRESSION_STATUS", "UPDATED") 및 ("REGRESSION_STATUS", "OUTDATED")를 설정하고 "UPDATED"및 " OUTDATED "를 적절하게 사용하십시오.

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"); 
    } 
} 

고마워요!

답변

1

환경 변수 중 System.getenv() method returns an unmodifiable view. 여기에서하는 것처럼 환경 변수를 설정할 때 사용할 수 없습니다.

환경 변수를 "설정할"수있는 유일한 시간은 ProcessBuilder 클래스 또는 Runtime.exec 메서드를 사용하여 하위 프로세스 환경을 만들 때 뿐이지 만 환경 복사본은 수정하지 않아도됩니다.

+0

그런 다음 달성하려는 솔루션이 있습니까? – Luqman

+0

프로세스가 환경 변수를 설정하는 경우 프로세스는 자신의 환경과 프로세스가 시작될 하위 프로세스의 환경에만 영향을줍니다. 당신은 어떤 아이들도 산란시키지 않으므로, 무엇을 성취하려고합니까? – Joni

1

C putenv과 JNI를 사용해야합니다. Java에서이를 수행 할 방법이 없습니다.