“Picked up _JAVA_OPTIONS”메시지 억제


13

RHEL에서 Java의 일부 기본값을 설정하기 위해 _JAVA_OPTIONS를 사용하고 있습니다. 그것은 잘 작동하지만 이제는 자바를 시작할 때마다 다음 메시지가 나타납니다.

 Picked up _JAVA_OPTIONS: -foo -bar -baz

옵션은 유지할 수 있지만이 메시지는 표시되지 않습니다.

답변:


11

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)

아마도 끔찍한 연습이지만 도커 이미지를위한 것이고 나는 모든 빨간색에 지쳤습니다. docker build그러나 이름 ${JAVA_HOME}/bin/java을 바꾸고 (with ) java2로이 스크립트의 수정 된 버전을 넣었습니다 . 매력처럼 일했다! javachmod +x
BrainSlugs83

1

또는 이것을 쉘 시작 / 프로파일 파일에 넣을 수 있습니다.

_SILENT_JAVA_OPTIONS="$_JAVA_OPTIONS"
unset _JAVA_OPTIONS
alias java='java "$_SILENT_JAVA_OPTIONS"'

java ...명령 행을 통해 직접 호출 할 때만 작동 합니다. 스크립트 또는 다른 상위 프로세스를 통한 모든 Java 호출은 영향을받지 않습니다
날으는 양

글쎄, 당신이 정말로 원한다면 같은 일을하는 쉘 스크립트가되도록 / bin / java를 바꿀 수있다.
spelufo

그렇지 않으면 옵션이 설정 해제되므로 다른 명령도 영향을받습니다. 옵션을 전달하지 않으면 침묵합니다 :).
spelufo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.