답변:
Java는 종종와 같은 절대 경로로 호출 /usr/bin/java
되기 때문에 경우에 따라이 답변을 쓸모 없게 만들고 다른 경우에는 더 많은 것을 요구합니다.
내가 찾은 솔루션은 문제를 일으키는 줄을 제거하는 필터를 통해 STDERR을 리디렉션하는 래퍼 쉘 스크립트를 작성해야합니다. 그것은에 위치하는 $PATH
이 랩과 일반 호출 할 자바 바이너리 전에 java
, which java
(그것을 사용하거나 도구를 구성해야합니다) 또는 이와 유사한
괄호로 서브 쉘을 작성하고 (command)
java의 STDERR을 STDIN으로 경로 재지 정하는 bash 기능에 의존합니다 command1 2> >(command2)
. 마지막으로, 서브 쉘의 프로세스는 필터링 된 입력을 STDOUT으로 다시 경로 재지 정해야 Java 프로그램이 여전히 STDERR을 사용할 수 있습니다.
#!/bin/bash
/usr/bin/java "$@" 2> >(grep -v "^Picked up _JAVA_OPTIONS:" >&2)
또는 이것을 쉘 시작 / 프로파일 파일에 넣을 수 있습니다.
_SILENT_JAVA_OPTIONS="$_JAVA_OPTIONS"
unset _JAVA_OPTIONS
alias java='java "$_SILENT_JAVA_OPTIONS"'
java ...
명령 행을 통해 직접 호출 할 때만 작동 합니다. 스크립트 또는 다른 상위 프로세스를 통한 모든 Java 호출은 영향을받지 않습니다
docker build
그러나 이름${JAVA_HOME}/bin/java
을 바꾸고 (with )java2
로이 스크립트의 수정 된 버전을 넣었습니다 . 매력처럼 일했다!java
chmod +x