Câu trả lời:
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 $PATH
trướ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 java
hoặ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)
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"'
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
docker build
- nhưng tôi đổi tên${JAVA_HOME}/bin/java
đểjava2
và đặt một phiên bản sửa đổi của kịch bản này trong đó làjava
(vớichmod +x
). Làm việc như người ở!