मेरे पास एक ग्रहण प्लगइन (ए) है जिसमें एक अन्य प्लगइन (बी) पर निर्भरता है। प्लगइन बी बस एक जार के चारों ओर एक रैपर है, जिसमें एक देशी डीएल होता है, और जेनी कार्यक्षमता करता है। इस स्थापना को देखते हुए, मैं एक के उत्प्रेरक वर्ग की आरंभ विधि में निम्नलिखित कोड है:ग्रहण कंसोल दृश्य में जेएनआई कंसोल आउटपुट को रीडायरेक्ट कैसे कर सकता हूं, जब ग्रहण प्लगइन जेएनआई का उपयोग करता है?
MessageConsole jniConsole = new MessageConsole("Opereffa Output", null);
ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] { jniConsole });
ConsolePlugin.getDefault().getConsoleManager().showConsoleView(jniConsole);
MessageConsoleStream stream = jniConsole.newMessageStream();
System.setOut(new PrintStream(stream));
System.setErr(new PrintStream(stream));
जब प्लगइन एक अपनी कार्यक्षमता करता है, System.out के किसी भी उपयोग वास्तव में ग्रहण के भीतर कंसोल के लिए चला जाता है। लेकिन जेएनआई द्वारा उपयोग किए जाने वाले मूल कोड भी आउटपुट स्ट्रीम को लिखते हैं, जिसे मैं नहीं पकड़ सकता। विकास के दौरान, जेएनआई से आउटपुट ग्रहण उदाहरण के कंसोल पर जाता है जिसने चलने वाले इंस्टेंस को लॉन्च किया है, जिसमें प्लगइन शामिल हैं।
तो मैं कंसोल में जेएनआई आउटपुट कैसे प्रदर्शित करूं?
मूल कोड में कौन से फ़ंक्शन लॉग संदेश हैं? printf, fprintf, डालता है ... ... क्या आप लॉगिंग फ़ंक्शन को बदलने, कोड को फिर से लिखने के लिए स्वतंत्र होंगे? –
चूंकि जेएनआई शामिल है: पोर्टेबल एक समाधान होना चाहिए? कम से कम किस प्लेटफॉर्म पर काम करना चाहिए? –