การระงับข้อความ“ หยิบ _JAVA_OPTIONS”


13

ฉันใช้ _JAVA_OPTIONS เพื่อตั้งค่าเริ่มต้นสำหรับ Java บน RHEL มันใช้งานได้ดี แต่ตอนนี้ทุกครั้งที่ฉันเริ่มจาวาฉันจะได้รับข้อความต่อไปนี้

 Picked up _JAVA_OPTIONS: -foo -bar -baz

เป็นไปได้ไหมที่จะรักษาตัวเลือกไว้ แต่ระงับการแสดงข้อความนี้

คำตอบ:


11

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)

อาจปฏิบัติน่ากลัว แต่มันเป็นภาพนักเทียบท่าและผมก็เริ่มเบื่อสีแดงทั้งหมดในช่วงdocker build- แต่ฉันเปลี่ยน${JAVA_HOME}/bin/javaไปjava2และนำรุ่นที่ปรับเปลี่ยนสคริปต์นี้ในที่นั่นในฐานะjava(กับchmod +x) ทำงานเหมือนจับใจ!
BrainSlugs83

2

หรือคุณสามารถใส่มันลงในไฟล์เริ่มต้น / โปรไฟล์ของเชลล์:

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

ใช้งานได้เฉพาะเมื่อเรียกใช้โดยตรงjava ...ผ่านบรรทัดคำสั่ง การเรียกใช้จาวาทั้งหมดผ่านสคริปต์หรือกระบวนการหลักอื่น ๆ จะไม่ได้รับผลกระทบ
flying sheep

ดีคุณสามารถเปลี่ยน / bin / java เป็นเชลล์สคริปต์ที่ทำสิ่งเดียวกันถ้าคุณต้องการ
spelufo

แม้ว่าคุณจะไม่ทำเช่นนั้นมันก็จะยกเลิกการตั้งค่าตัวเลือกดังนั้นคำสั่งอื่น ๆ ก็จะได้รับผลกระทบเช่นกัน มันจะทำให้พวกเขาเงียบโดยไม่ผ่านตัวเลือกใด ๆ :)
spelufo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.