programing

Java -D 명령줄 매개 변수의 올바른 사용

newsource 2022. 8. 11. 22:59

Java -D 명령줄 매개 변수의 올바른 사용

Java에서 -D 파라미터를 전달할 때 명령줄을 작성한 후 코드에서 액세스하는 적절한 방법은 무엇입니까?

예를 들면 이런 걸 써보려고 했는데...

if (System.getProperty("test").equalsIgnoreCase("true"))
{
   //Do something
}

그리고 이렇게 부르면...

java -jar myApplication.jar -Dtest="true"

하지만 Null Pointer를 받았습니다.예외.내가 뭘 잘못하고 있지?

내 생각엔 당신이 '-D' 뒤에 "-D"를 붙이는 게 문제인 것 같아요-jar. 시험해 보세요:

java -Dtest="true" -jar myApplication.jar

명령줄 도움말에서 다음을 수행합니다.

java [-options] -jar jarfile [args...]

다시 말해, 지금 당신이 가지고 있는 방식이-Dtest="true"의론의 하나로서mainJVM 인수 대신 사용할 수 있습니다.

(아마도 인용구를 빼야 할 것 같습니다만, 어쨌든 효과가 있을 것입니다.아마도 고객님의 껍질에 따라 다를 수 있습니다.

다음 중 하나여야 합니다.

java -Dtest="true" -jar myApplication.jar

그러면 다음 값이 반환됩니다.

System.getProperty("test");

값은 다음과 같습니다.null단, 예외에 주의할 필요가 있습니다.Boolean:

boolean b = Boolean.parseBoolean( System.getProperty( "test" ) );

이 메서드는 시스템 속성 값을 위임하여 코드를 다음과 같이 단순화합니다.

if( Boolean.getBoolean( "test" ) ) {
   // ...
}

Java 대신 프로그램에 파라미터를 부여하고 있습니다.사용하다

java -Dtest="true" -jar myApplication.jar 

대신.

사용을 검토하다

"true".equalsIgnoreCase(System.getProperty("test"))

NPE를 회피합니다.그러나 항상 "요다 조건"을 아무 생각 없이 사용하지 마십시오. NPE를 던지는 것이 올바른 행동일 수도 있고, 때로는 다음과 같은 것이 있습니다.

System.getProperty("test") == null || System.getProperty("test").equalsIgnoreCase("true")

is right(기본값이 true인 경우)입니다.보다 짧은 가능성은

!"false".equalsIgnoreCase(System.getProperty("test"))

이중 부정을 사용하지 않는 것이 오해를 덜 어렵게 하는 것은 아닙니다.

언급URL : https://stackoverflow.com/questions/5045608/proper-usage-of-java-d-command-line-parameters