Яву часто називають абсолютними шляхами на кшталт /usr/bin/java
, що робить цю відповідь марною в одних випадках і вимагає більше, щоб вона працювала в інших.
Це рішення, яке я знайшов, вимагає написання сценарію оболонки для обгортки, який перенаправляє STDERR через фільтр, видаляючи порушуючий рядок. Він повинен бути поміщений в $PATH
перед Явою двійковим це обертає і викликаються з простим java
, which java
або аналогічним (або вашим інструментом повинен бути налаштований для використання його)
Він покладається на здатність bash створити підзаголовки з дужками (command)
і перенаправити STDERR Java на його STDIN command1 2> >(command2)
. Нарешті, процес в підпакеті повинен знову перенаправити свій відфільтрований вхід на 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
). Працював як шарм!