जावा को अक्सर पूर्ण पथों के साथ कहा जाता है /usr/bin/java
, जो इस उत्तर को कुछ मामलों में बेकार बना देता है, और इसे दूसरों में काम करने के लिए अधिक आवश्यकता होती है।
मुझे लगता है कि समाधान एक आवरण खोल स्क्रिप्ट लिखने की आवश्यकता है कि STDERR को एक फिल्टर के माध्यम से अपमानजनक रेखा को हटा देता है। इसे $PATH
जावा बाइनरी में लपेटने से पहले रखा जाना चाहिए और इसे सादे java
, which java
या समान (या आपके उपकरण को इसका उपयोग करने के लिए कॉन्फ़िगर करना होगा) के साथ बुलाया जाना चाहिए
यह कोष्ठक के साथ एक उपधारा बनाने के लिए बैश करने की क्षमता पर निर्भर करता है (command)
, और जावा के STDERR को अपने STININ पर पुनर्निर्देशित करता है command1 2> >(command2)
। अंत में, उपधारा में प्रक्रिया को इसके फ़िल्टर किए गए इनपुट को फिर से STDOUT पर पुनर्निर्देशित करने की आवश्यकता है ताकि जावा प्रोग्राम अभी भी STDOSR का उपयोग कर सकें।
#!/bin/bash
/usr/bin/java "$@" 2> >(grep -v "^Picked up _JAVA_OPTIONS:" >&2)
docker build
- लेकिन मैंने नाम बदल${JAVA_HOME}/bin/java
दियाjava2
और इस स्क्रिप्ट का संशोधित संस्करण वहांjava
(जैसेchmod +x
) के साथ रखा । एक जादू की तरह काम किया!