2012-11-21 3 views
3

에 정의 된 경우에도 null입니다. 나는 오히려 기본 자바 기능에 문제를 찾을 수 있었다 - 응용 프로그램이 일부 시스템 속성을 지정하는 -D 옵션으로 시작된다. 런타임 동안, 상기 속성들은 설정되지 않았으며 그 값들은 null이다.시스템 속성은 내가 큰 시스템에서 문제를 디버깅하고 명령 행

public static void main(String[] args) { 
    String propName = "sysprop"; 
    String propValue = System.getProperty(propName); 
    System.out.println(propName + "=" + propValue); 
    } 

내가 같은 결과를 가지고 다음과 같은 명령 줄 및 놀랍게도 응용 프로그램을 시작 : 나는 다음과 같은 매우 간단한 응용 프로그램을 만들어 문제 재현하려고

자바 - CP javaapplication8.jar javaapplication8.JavaApplication8 -Dsysprop = "어떤 값"

sysprop = NULL

,536,

명백하게 나는 명백한 (또는 약간의 기본 지식이 부족하다) 것을 놓치고있다. 그러나 그것은 무엇인가?

감사합니다.

+2

'자바 : 당신은 그냥 java를 실행하면 다음과 같은 사용 도움말을 볼 수 있습니다 – Alex

답변

7

-D을 클래스 이름 뒤에 뒤에 지정하므로 응용 프로그램 자체로 전달되는 일반 명령 줄 인수로 취급됩니다. 인쇄 된 값이 args 인 것을 볼 수 있습니다.

이 대신 같은 응용 프로그램을 실행

java -cp javaapplication8.jar -Dsysprop="some value" javaapplication8.JavaApplication8 

환경이 아닌 클래스 이름 앞에 와야합니다 응용 프로그램에 적용하기위한 것입니다 모든 인수. -Dsysprop = "어떤 값"-cp javaapplication8.jar javaapplication8.JavaApplication8` 메인 클래스 전에 -D를 넣어

Usage: java [-options] class [args...] 
      (to execute a class) 
    or java [-options] -jar jarfile [args...] 
      (to execute a jar file) 
where options include 
[...]