2010-06-18 12 views
6

जावा के संबंध में आप इस महान नए एपीआई का उपयोग कैसे करते हैं? क्या आप देशी शुद्ध प्रक्रिया एपीआई जैसे देशीProcess.standardInput.write() और देशीProcess.standardOutput.read() का उपयोग करते हैं जिसके साथ आप जावा पक्ष को डीबग नहीं कर सकते हैं और न ही दूरस्थ जावा विधि का आह्वान कर सकते हैं। या आप कुछ लाइब्रेरी का उपयोग कर रहे हैं जो फ्लेरी लिब जैसे रिमोट विधि आमंत्रण का लाभ उठाता है लेकिन यह जावा पक्ष को डीबग नहीं कर सकता है? या हो सकता है कि आप मेरापी का उपयोग कर रहे हों जिसके साथ आप डीबग कर सकते हैं लेकिन दूरस्थ रूप से जावा विधि का आह्वान नहीं कर सकते? मैं यह पूछ रहा हूं क्योंकि यह शायद इस एपीआई और उपयोग की आसानी के बारे में सबसे महत्वपूर्ण सवाल है।जावा के साथ एआईआर 2.0 नेटिव प्रोसेस एपीआई का उपयोग कैसे करें?

+0

जिस तरह से यह अब की तरह दिखता है, कि यदि स्थानीय प्रक्रिया के साथ संवाद स्थापित, देशी प्रक्रिया इस तरह दूर में लागू किया जाना चाहिए कि यह मानक इनपुट के लिए इंतजार कर रहा है और मानक उत्पादन/त्रुटि को लिखा है। तो बस इसे स्पष्ट करने के लिए, आप उस सिद्धांत की पुष्टि, या एक अस्वीकृति के लिए पूछ रहे हैं, अंततः एक उदाहरण के साथ, सही? –

+0

यह सवाल बहुत अस्पष्ट है। क्या आपको आवेदन का आह्वान करने में परेशानी हो रही है? या बाद में कुछ परेशानी जो आप डीबग करना चाहते हैं? –

उत्तर

0

ऐसा लगता है जैसे जावा प्रक्रिया को डीबग करने में सक्षम होने के साथ आपके आरक्षण करना है। यह वास्तव में एक मुद्दा नहीं है। आप तर्क प्रक्रियाओं के साथ जावा प्रक्रिया को बंद करने के लिए नेटिवप्रोसेस एपीआई का उपयोग कर सकते हैं जो इसे बाहरी रूप से डिबग करने योग्य बना देगा। उदाहरण के लिए:

var processArgs:Vector.<String> = new Vector.<String>(); 
processArgs.push("-Xdebug"); 
processArgs.push("-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"); 

यह आपकी जावा प्रक्रिया को दूरस्थ डिबग करने योग्य होने की अनुमति देगा। एक बार प्रक्रिया शुरू हो जाने के बाद आप इसे एक्लिप्स या नेटबीन्स से कनेक्ट कर सकते हैं। यदि जावा प्रक्रिया में कोड सक्रिय ग्रहण/नेटबीन्स प्रोजेक्ट से जुड़ा हुआ है, तो आप लाइनवाइंड डीबगिंग कर सकते हैं जैसे कि आप किसी अन्य जावा एप्लिकेशन की तरह।

-Raj

0

आप NativeProcess का उपयोग java.exe निष्पादित और सही मापदंडों इसे पारित करने के लिए एक जावा आवेदन निष्पादित करने के लिए कर सकते हैं।

आप एक जार फ़ाइल से यादृच्छिक जावा कोड चलाने के लिए NativeProcess का उपयोग नहीं कर सकते।

0

उनमें से दोनों का उपयोग करने के बाद, आप MerppI या NativeProcess API के साथ JVM को डीबग कर सकते हैं। एआईआर 2.0 से पहले, मैंने जावा प्रक्रिया में नेटवर्क पर संवाद करने के लिए मेरापी का उपयोग किया।

मैरीपीआई के साथ अब मैं नेटप्रोसेस लॉन्चर का उपयोग करना पसंद करूंगा, हम बदसूरत मार्शलिंग कोड हैक कर रहे थे। नेटवर्क पेलोड को डिबग करना मेरपी के माध्यम से एक पिन था।

NativeProcess API का उपयोग करना आसान है -

वर myForkedExe: NativeProcessStartupInfo = नए NativeProcessStartupInfo(); myForkedExe.executable =; ...

मुझे यकीन नहीं है कि मैं समझता हूं कि आप मेरापी के साथ रिमोट जावा विधियों का आह्वान नहीं कर सकते हैं। यह वही है जो मैं कर रहा हूं। डीबगिंग आसान है, बस जेपीडीए तर्क सेट करें और किसी भी जावा डीबगर को संलग्न करें।

0

जावा प्रक्रियाओं के साथ लॉन्च और संवाद करने के लिए आप Flerry का उपयोग कर सकते हैं।

0

आप var file:File = new File("/usr/bin/java"); का उपयोग कर सकते हैं और जावा-फ़ाइल में पैरामीटर को वेक्टर के वेक्टर के साथ पास कर सकते हैं। जैसे

var arguments:Vector.<String> = new Vector.<String>; 
arguments.push("-jar"); 
संबंधित मुद्दे