Việc loại bỏ tin nhắn được chọn _JAVA_OPTIONS


13

Tôi đang sử dụng _JAVA_OPTIONS để đặt một số giá trị mặc định cho Java trên RHEL. Nó hoạt động tốt nhưng bây giờ mỗi khi tôi khởi động java tôi nhận được thông báo sau

 Picked up _JAVA_OPTIONS: -foo -bar -baz

có thể giữ các tùy chọn nhưng không hiển thị thông báo này.

Câu trả lời:


11

Java thường được gọi với các đường dẫn tuyệt đối như thế /usr/bin/java, điều này làm cho câu trả lời này trở nên vô dụng trong một số trường hợp và đòi hỏi nhiều hơn để làm cho nó hoạt động ở những người khác.

Giải pháp mà tôi tìm thấy đòi hỏi phải viết một tập lệnh trình bao bọc để chuyển hướng STDERR thông qua bộ lọc loại bỏ dòng vi phạm. Nó phải được đặt trong $PATHtrước khi java nhị phân nó kết thúc tốt đẹp và được gọi với đồng bằng java, which javahoặc tương tự (hoặc công cụ của bạn phải được cấu hình để sử dụng nó)

Nó phụ thuộc vào khả năng bash để tạo một lớp con với dấu ngoặc đơn (command)và chuyển hướng STDERR của java sang STDIN của nó command1 2> >(command2). Cuối cùng, quá trình trong lớp con cần chuyển hướng đầu vào được lọc của nó sang STDOUT một lần nữa để các chương trình java vẫn có thể sử dụng STDERR.

#!/bin/bash
/usr/bin/java "$@" 2> >(grep -v "^Picked up _JAVA_OPTIONS:" >&2)

Có lẽ thực tế khủng khiếp, nhưng nó cho một hình ảnh Docker và tôi đã mệt mỏi của tất cả các màu đỏ trong suốt docker build- nhưng tôi đổi tên ${JAVA_HOME}/bin/javađể java2và đặt một phiên bản sửa đổi của kịch bản này trong đó là java(với chmod +x). Làm việc như người ở!
BrainSlugs83

2

Hoặc bạn có thể đặt cái này trong tập tin khởi động / hồ sơ shell của bạn:

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

chỉ hoạt động khi gọi trực tiếp java ...qua dòng lệnh. tất cả các yêu cầu java thông qua các tập lệnh hoặc các quy trình cha mẹ khác sẽ không bị ảnh hưởng
cừu bay

tốt, bạn có thể thay đổi / bin / java thành tập lệnh shell thực hiện điều tương tự nếu bạn thực sự muốn.
gameufo 7/12/2015

ngay cả khi bạn không, nó sẽ bỏ đặt các tùy chọn, vì vậy các lệnh khác cũng sẽ bị ảnh hưởng. Nó sẽ làm họ im lặng bằng cách không cho họ bất kỳ lựa chọn nào :).
gameufo 7/12/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.