ฉันใช้ _JAVA_OPTIONS เพื่อตั้งค่าเริ่มต้นสำหรับ Java บน RHEL มันใช้งานได้ดี แต่ตอนนี้ทุกครั้งที่ฉันเริ่มจาวาฉันจะได้รับข้อความต่อไปนี้
Picked up _JAVA_OPTIONS: -foo -bar -baz
เป็นไปได้ไหมที่จะรักษาตัวเลือกไว้ แต่ระงับการแสดงข้อความนี้
ฉันใช้ _JAVA_OPTIONS เพื่อตั้งค่าเริ่มต้นสำหรับ Java บน RHEL มันใช้งานได้ดี แต่ตอนนี้ทุกครั้งที่ฉันเริ่มจาวาฉันจะได้รับข้อความต่อไปนี้
Picked up _JAVA_OPTIONS: -foo -bar -baz
เป็นไปได้ไหมที่จะรักษาตัวเลือกไว้ แต่ระงับการแสดงข้อความนี้
คำตอบ:
Java มักถูกเรียกพร้อมกับพา ธ สัมบูรณ์เช่น/usr/bin/java
นี้ซึ่งทำให้คำตอบนี้ไร้ประโยชน์ในบางกรณีและต้องการเพิ่มเติมเพื่อให้สามารถทำงานกับผู้อื่นได้
วิธีแก้ปัญหาที่ฉันพบต้องเขียนสคริปต์เปลือกหุ้มที่เปลี่ยนเส้นทาง STDERR ผ่านตัวกรองลบบรรทัดที่กระทำผิด มันจะต้องมีการวางไว้ใน$PATH
ก่อนจาวาไบนารีมันแรปและจะเรียกว่าธรรมดาjava
, which java
หรือคล้ายกัน (หรือเครื่องมือของคุณจะต้องมีการกำหนดค่าการใช้งาน)
มันต้องอาศัยความสามารถในการทุบตีเพื่อสร้าง subshell กับวงเล็บ(command)
และ STDERR เปลี่ยนเส้นทาง Java เพื่อ command1 2> >(command2)
STDIN ในที่สุดกระบวนการใน subshell จำเป็นต้องเปลี่ยนเส้นทางอินพุตที่ถูกกรองไปยัง 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 ...
ผ่านบรรทัดคำสั่ง การเรียกใช้จาวาทั้งหมดผ่านสคริปต์หรือกระบวนการหลักอื่น ๆ จะไม่ได้รับผลกระทบ
docker build
- แต่ฉันเปลี่ยน${JAVA_HOME}/bin/java
ไปjava2
และนำรุ่นที่ปรับเปลี่ยนสคริปต์นี้ในที่นั่นในฐานะjava
(กับchmod +x
) ทำงานเหมือนจับใจ!