Java sering disebut dengan path absolut seperti /usr/bin/java
, yang membuat jawaban ini tidak berguna dalam beberapa kasus, dan membutuhkan lebih banyak untuk membuatnya bekerja di yang lain.
Solusi yang saya temukan memerlukan penulisan skrip shell pembungkus yang mengarahkan ulang STDERR melalui filter menghapus garis yang menyinggung. Itu harus ditempatkan di $PATH
sebelum java binary membungkusnya dan dipanggil dengan plain java
, which java
atau serupa (atau alat Anda harus dikonfigurasi untuk menggunakannya)
Itu bergantung pada kemampuan bash untuk membuat subkulit dengan tanda kurung (command)
, dan mengarahkan STDERR java ke STDIN-nya command1 2> >(command2)
. Akhirnya, proses dalam subkulit perlu mengarahkan ulang input yang difilter ke STDOUT lagi sehingga program java masih dapat menggunakan STDERR.
#!/bin/bash
/usr/bin/java "$@" 2> >(grep -v "^Picked up _JAVA_OPTIONS:" >&2)
docker build
- tapi saya berganti nama${JAVA_HOME}/bin/java
menjadijava2
dan menempatkan versi modifikasi dari skrip ini di sana sebagaijava
(denganchmod +x
). Bekerja seperti pesona!