2008-08-18 15 views
5

मैं सिर्फ जेएनआई (जावा मूल इंटरफ़ेस) की दुनिया में अपनी पहली यात्रा करने के लिए प्लेटफार्म विशिष्ट सी/सी ++ कोड से जावा में फ़ाइल सिस्टम परिवर्तन अधिसूचनाएं प्रदान करने वाला हूं। ऐसा तब तक होता है जब तक कोई ऐसा करने के लिए कुछ शानदार लाइब्रेरी का सुझाव नहीं देता है जिसे मैंने याद किया है।जेएनआई और जावा: चींटी कॉलिंग चींटी बनाने या बनाने के लिए?

जेएनआई के लिए नया होने के नाते मैंने इसके इंटरफ़ेस पक्ष और लाइब्रेरी पीढ़ी के पक्ष में अधिक दस्तावेज ढूंढने में कामयाब रहा है, लेकिन मुझे मूल पुस्तकालय बनाने पर बहुत कुछ नहीं मिला है।

मुझे पूर्व-मौजूदा जावा स्रोत के लिए चींटी के आधार पर एक मौजूदा निर्माण मिला है, इसलिए यदि मैं लाइब्रेरी बनाने के लिए कॉल करने के लिए चींटी प्राप्त करना चाहता हूं या यदि इसे प्राप्त करना सबसे अच्छा है तो मैं काम करने की कोशिश कर रहा हूं लाइब्रेरी बनाने के बाद चींटी कॉल करें?

न तो विकल्प बहुत अच्छा होने के रूप में बाहर निकलता है, लेकिन कोड को संकलित करने और सीधे लाइब्रेरी उत्पन्न करने के लिए एक कंपाइलर को कॉल करने के लिए चींटी प्राप्त करने की कोशिश करने से बेहतर लगता है।

उत्तर

3

मैं इसके निहित नियम और सफेद जगह के उपचार के कारण दृढ़ता से नापसंद करता हूं। व्यक्तिगत रूप से मैं अपने सी संकलन करने के लिए सीपीपी कार्यों (http://ant-contrib.sourceforge.net/cpptasks/index.html) का उपयोग करूंगा। वे बनाने के रूप में लचीले नहीं हैं लेकिन वे बहुत कम जटिल हैं और इसका मतलब यह होगा कि आपको सीखने के साथ अपने डेवलपर्स को बोझ नहीं करना पड़ेगा।

+0

सीपीपी कार्यों के लिए मुझे बहुत अच्छा काम करने के लिए बहुत अच्छा काम किया। मुझे कुछ क्रॉस संकलन करने की आवश्यकता समाप्त हो गई, लेकिन यह निर्दिष्ट करने की क्षमता कि कौन सी कक्षा को सीपीटीपीस्क के लिए बैक एंड के लिए उपयोग करना है, हल किया गया है। –

3

जेएनआई के लिए एक आसान विकल्प के रूप में, जेएनए: https://jna.dev.java.net/ आज़माएं, आपके लिए यह परेशानी हल हो सकती है और सरल हो सकती है (मान लीजिए कि यह वही कर सकता है जो आप चाहते हैं)।

+0

जेएनए जो चाहता था वह करने का एक अच्छा तरीका दिखता था, लेकिन दुख की बात है कि मुझे नई विंडो कक्षाएं बनाना शुरू करना पड़ा और इसके लिए वापस कार्यों को कॉल करना पड़ा, जो संभव नहीं लग रहा था इसलिए मुझे जेएनआई का उपयोग करने के लिए वापस गिरना पड़ा। –

1

मैं अभी कुछ इसी तरह काम कर रहा हूं। ध्यान रखें कि swig.org से स्विग का उपयोग करना अक्सर आसान होता है क्योंकि यह आपके लिए मूल पुस्तकालय में स्टब्स उत्पन्न करता है।

आपके प्रश्न का संक्षिप्त उत्तर यह है कि जावा लाइब्रेरी पहले से ही बनाई गई है, इसलिए एंटी फ़ाइल को मेक फ़ाइल चलाया जाना चाहिए, क्योंकि देशी लाइब्रेरी जावा क्लास फाइलों से उत्पन्न होने वाली स्विग जेनरेटेड हेडर पर निर्भर करती है।

यदि आप चींटी से बहुत परिचित हैं, और एक नई प्रणाली नहीं सीखना चाहते हैं, तो http://ant-contrib.sourceforge.net/cpptasks/index.html, जो कि किसी अन्य पोस्टर से जुड़ा हुआ है, आपको एंटी में सी ++ बनाने देगा।

1

मैं जेएनआई पूरी तरह से छोड़ दूंगा, और एक बाहरी प्रोग्राम का उपयोग करूंगा जो मानक आउटपुट पर अधिसूचनाएं लिखता है। जावा बस प्रोग्राम आउटपुट स्ट्रीम से पढ़ सकते हैं और जो भी घटना आवश्यक हो सकते हैं उत्पन्न कर सकते हैं। यदि आप चाहते हैं कि जेएनआई बहुत अधिक काम है तो सरल सूचनाएं भेजना है।

इसके अलावा, लिनक्स पर आप बस "inotifywait" शुरू कर सकते हैं (कुछ उपयुक्त पैरामीटर के साथ, "मैन इनोटिफाइवाइट" देखें)।

0

आप Codemesh पर टेप सी ++ कार्यों को भी आजमा सकते हैं। वे स्वतंत्र नहीं हैं लेकिन वे सी ++ कंपाइलर को खोजने/निर्दिष्ट करने की क्षमता और मल्टीप्लार्टर बिल्ड के लिए एक से अधिक कंपाइलर/प्रोसेसर आर्किटेक्चर/कंपाइलर कॉन्फ़िगरेशन को पुन: स्थापित करने की क्षमता के साथ उच्च स्तर का अबास्ट्रक्शन प्रदान करते हैं।