2012-10-11 14 views
6

मैं ओएस एक्स पर डेटाबेस जेडीबीसी ड्राइव जैसे विभिन्न जेएआर फाइलों को स्थापित करना चाहता हूं ताकि अन्य जावा एप्लिकेशन उन्हें ढूंढ सकें।ओएस एक्स पर जेएआर फाइलों को स्थापित करने के लिए कहां अन्य जावा एप्लिकेशन उन्हें मिलेगा?

मुझे उन्हें कहां रखा जाना चाहिए? मैंने ~/Library/Java/Extensions की कोशिश की लेकिन यह काम करने के लिए सीम नहीं है।

विवरण:

OS X 10.8.2 

java version "1.6.0_35" 
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811) 
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode) 

नोट: मैं कैसे आवेदन आरंभ नहीं हो जाता पर नियंत्रण नहीं है, लेकिन मुझे लगता है कि आवेदन यह खुद जावा वितरण है incude नहीं है और है कि यह ओएस स्थापित संस्करणों शुरू कर देंगे है (वह जो कमांड लाइन से उपलब्ध है)।

इसके अलावा, मैं किसी भी CLASSPATH सेटअप नहीं है, और कृपया याद रखें कि वातावरण चर कि कमांड लाइन कार्यक्रमों के लिए उपलब्ध हैं

मैं निर्दिष्ट करने की आवश्यकता OS X पर लोगों जीयूआई एप्लिकेशन के लिए उपलब्ध के रूप में ही नहीं हैं कि मैं अपनी विकास मशीन के लिए यह कोशिश कर रहा हूं और यह दृष्टिकोण जावा अनुप्रयोगों को तैनात करने का एक तरीका नहीं है।

+0

पर निर्भर करता है आप किसी भी निर्भरता प्रबंधन उपकरण का उपयोग नहीं कर रहे हैं? धीरे-धीरे, मेवेन या चींटी/ivy की तरह? इससे आपके लिए जीवन आसान हो जाएगा। – maba

उत्तर

1

उन्हें एप्लिकेशन के कक्षा में शामिल करना होगा। यदि आप इसे कमांड लाइन से निष्पादित करते हैं, तो उदाहरण का उपयोग करें। "जावा-सीपी ~/लाइब्रेरी/जावा/एक्सटेंशन/foo.jar बार"

दूसरी तरफ, यदि आप टॉमकैट जैसे एप्लिकेशन सर्वर का उपयोग करते हैं, तो आप या तो अपने आवेदन के आवेदन के युद्ध के अंदर जार पैकेज कर सकते हैं सर्वर के साझा पुस्तकालय फ़ोल्डर में।

10

कृपया यह न करें। यहां बताया गया है: अन्य ऐप्स तोड़ देंगे, क्योंकि उन जेएआर फ़ाइलों को प्रत्येक जावा ऐप के लिए लोड किया जाएगा।

विस्तार से: मै मैक के लिए जावा ऐप बेचता हूं। यह एक JAR फ़ाइल (JFreeChart के लिए) का एक विशिष्ट हालिया संस्करण रखने पर निर्भर करता है। कभी-कभी उपयुक्त एक्सटेंशन फ़ोल्डर में एक ही JAR फ़ाइल का पुराना संस्करण होता है। यह मेरे ऐप को तोड़ देता है।

लेकिन क्या आप वाकई ऐसा करना चाहते हैं: Apple's docs के अनुसार:

एक्सटेंशन पुस्तकालय

दूसरे प्लेटफार्म पर

जावा सॉफ्टवेयर अक्सर बनाता भीतर $ JAVA_HOME/lib/ext निर्देशिका के उपयोग समर्थन वर्ग या जार फ़ाइलों को संग्रहीत करने के लिए एक जेडीके स्थापना। जबकि मैक ओएस एक्स के लिए जावा में lib/ext निर्देशिका भी शामिल है, डेवलपर्स को ऊपर उल्लिखित के लिए सीधे इसे संशोधित नहीं करना चाहिए। /लाइब्रेरी/जावा/एक्सटेंशन निर्देशिका अतिरिक्त जार फ़ाइलों या जेएनआई पुस्तकालयों के लिए उपयोग किया जा सकता है जिन्हें सिस्टम क्लासपाथ पर रखा जाना चाहिए। अधिक नियंत्रित पहुंच के लिए, ~/लाइब्रेरी/जावा/एक्सटेंशन निर्देशिका का उपयोग उपयोगकर्ता स्तर समर्थन पुस्तकालयों की स्थापना के लिए किया जा सकता है। इन निर्देशिकाओं में से किसी एक आइटम को किसी एप्लिकेशन के क्लासपाथ में नामित करने की आवश्यकता नहीं है और संबंधित स्कोप (सिस्टम-स्तर या उपयोगकर्ता-स्तर के आधार पर चलने वाले सभी अनुप्रयोगों के लिए उपलब्ध होगा), जो निर्देशिका का उपयोग किया जाता है)।

0

मैं दूसरी स्टीव की टिप्पणी और आगे सुझाव देगा कि आप अपनी निर्भरता के प्रबंधन के लिए Maven या Ivy का उपयोग करें।

लाइब्रेरी प्रबंधन प्रति-परियोजना है। अपडेट और परस्पर निर्भरता प्रबंधित करना बहुत आसान है। मेवेन (मुझे आइवी के बारे में पता नहीं है) आपको बता सकता है कि कौन से libs पुराने हैं, जो एक-दूसरे के साथ संघर्ष करते हैं। प्रत्येक प्रोजेक्ट के लिए आप बिना किसी चिंता के आवश्यक संस्करणों को निर्दिष्ट कर सकते हैं कि परिवर्तन अन्य परियोजनाओं को तोड़ देंगे या नहीं।

-3

ठीक है मेरा योगदान ... लेकिन मैं कमांड लाइन पर अपना छोटा डेटाबेस प्रोग्राम चलाने के लिए चाहता था लेकिन मुझे ऐसा करने के लिए कक्षा पथ में mysql-connector-java-5.1.29-bin.jar की आवश्यकता थी। मैंने कुछ समय बिताया और इसे हल करने का प्रयास किया। मैंने Library/Java/Extensions फ़ोल्डर में जार फ़ाइल गिरा दी और मेरी मशीन को पुनरारंभ किया। अब उपर्युक्त कहता है कि जब आप प्रोग्राम "java -cp ~/Library/Java/Extensions/foo.jar Bar) कर रहे हैं तो आपको क्लासपाथ शामिल करना चाहिए, लेकिन यह मेरे लिए काम नहीं करता है। इसके बजाय मैं संकलन समय के दौरान आदेश जारी किए गए और फिर मेरे कार्यक्रम चलाया:

$ javac -cp /Library/Java/Extensions/mysql-connector-java-5.1.29-bin.jar FirstExample.java 
$ java FirstExample 

और यह मैं क्या मिला ... मेरे डेटाबेस से क्वेरी डेटा है:

डेटाबेस से कनेक्ट हो रहा ...
बनाना बयान ...
आईडी: 1, शीर्षक: बिक्री प्रतिनिधि, सबसे पहले: नैन्सी, लास्ट: Davolio
ID: 2, शीर्षक: उपाध्यक्ष, बिक्री, सबसे पहले: एंड्रयू, लास्ट: फुलर आईडी: 3, शीर्षक : बिक्री प्रतिनिधि, पहला: जेनेट, अंतिम:लीवरलिंग आईडी: 4, शीर्षक: बिक्री प्रतिनिधि, सबसे पहले मार्गरेट, लास्ट: मयूर
आईडी: 5, शीर्षक: बिक्री प्रबंधक, सबसे पहले: स्टीवन, लास्ट: बुकानन
आईडी: 6, शीर्षक: बिक्री प्रतिनिधि, सबसे पहले: माइकल , लास्ट: सुयामा
आईडी: 7, शीर्षक: बिक्री प्रतिनिधि, सबसे पहले: रॉबर्ट, लास्ट: राजा
ID: 8, शीर्षक: अंदर बिक्री समन्वयक, पहले: लौरा, लास्ट: कालाहन
आईडी: 9, शीर्षक: बिक्री प्रतिनिधि, पहला: ऐनी, अंतिम: डॉड्सवर्थ

अलविदा!

आशा है कि यह

+0

यह बताता नहीं है कि एक जार _install_ कहां है और डेटाबेस के साथ उदाहरण भ्रमित है। –

संबंधित मुद्दे