मैं RedHat चलाने वाले सर्वर के लिए एक कंसोल एप्लिकेशन डिज़ाइन कर रहा हूं। अंतिम उपयोगकर्ता इस ऐप को अपने चयन के किसी टर्मिनल के साथ चलाने में सक्षम होना चाहिए। (उदाहरण के लिए; जीनोम टर्मिनल, पुट्टी एसएसएच/टेलनेट, एमएस टेलनेट क्लाइंट और अन्य)।System.in के लिए पर्यावरण की स्थापना
अधिकांश टर्मिनल अनुप्रयोगों में कुछ भी गलत नहीं है, हालांकि जब मैं एमएस टेलनेट सत्र से अपना प्रोग्राम लॉन्च करता हूं, तो मुझे System.in
और System.console()
के लिए मेरा विशेष इनपुट पूरी तरह से गड़बड़ हो जाता है। बैकस्पेस स्क्रीन पर ^H
लिख देगा और अन्य कुंजियां भी गिब्बरिश लिखेंगे।
मैंने इसे हैक कर लिया गया है पर्याप्त है कि मैं यह लगातार काम करने के लिए मिल सकता है, लेकिन मुझे यकीन है कि मैं क्या कर रहा हूँ सकल है:
if (!System.getenv("TERM").equals("xterm"))
{
System.out.println("\nWARNING: The TERM type is now set to xterm\n");
final String[] cmd = { "/bin/sh", "-c", "export TERM=xterm" };
Runtime.getRuntime().exec(cmd);
}
करने में कोई समस्या यहाँ टर्मिनलों के लिए होगा कि डॉन xterm
का समर्थन नहीं करते? मैंने देखा है कि माइक्रोसॉफ्ट टेलनेट क्लाइंट आपको सत्र शुरू करने से पहले TERM
टाइप xterm
पर सेट करने की अनुमति नहीं देता है। एक बार सत्र शुरू हो जाने के बाद, TERM=xterm
सेटिंग को हल करने के लिए लगता है।
अधिकांश कंसोल एप्लिकेशन इस मुद्दे के बारे में कैसे जाते हैं?
शायद अपने निरर्थक शब्दों एएनएसआई बच sequnces http://stackoverflow.com/questions/16755142/how-to-make-win32-console-recognize-ansi-vt100-escape-sequences?lq=1 –
वहाँ देखने के लिए कर रहे हैं : https://github.com/fusesource/jansi जांसी एक छोटी जावा लाइब्रेरी है जो आपको अपने कंसोल आउटपुट को प्रारूपित करने के लिए एएनएसआई एस्केप अनुक्रमों का उपयोग करने की अनुमति देती है जो विंडोज़ पर भी काम करती है। –
@AndreasFrische ओह वाह जो वादा करता है! इसके साथ खेलना होगा! – flakes