2013-01-23 16 views
6

के लिए एक स्विंग एप्लिकेशन में एक जेआरई एम्बेड करना मुझे एक एम्बेडेड जेआरई के साथ एक स्विंग एप्लिकेशन भेजना होगा। एप्लिकेशन + जेआरई + .bat/.sh के साथ एक ज़िपित संग्रह विंडोज और लिनक्स के लिए चाल है। उपयोगकर्ता ज़िप डाउनलोड करते हैं, इसे अनजिप करते हैं, और एप्लिकेशन लॉन्च करते हैं। उत्तम।मैक ओएस एक्स

लेकिन अब, मुझे मैक ओएस एक्स के लिए एक ही चीज़ प्रदान करनी होगी। मैंने उस मामले पर कई अलग-अलग चीजों को पढ़ा/बताया था (मैक पर जेआरई वितरित करने के लिए मना किया गया है, इसके विपरीत, हमेशा एक जेआरई है मैक, इत्यादि ...), इसलिए मैं वास्तव में उलझन में हूं कि मैं संभवतः क्या कर सकता हूं।

क्या कोई पहले से ही ऐसी चीज करता है? आपने मैक एप्लिकेशन परिनियोजन को कैसे हल किया? बोनस के रूप में, मैक (ज़िप?) में अपना एप्लिकेशन वितरित करने का सबसे अच्छा प्रारूप क्या है?

+2

क्या आपने [एक्सेलसियर जेट] (http://www.excelsior-usa.com) की कोशिश की है /jet.html)? –

+1

Launch4j के बारे में कैसे? और [यह] जांचें (http://stackoverflow.com/questions/9761518/macos-executable-of-a-jar-file) –

+0

@ निकोलयकुज़नेत्सोव लॉन्च 4 जे केवल विंडोज '.exe 'लॉन्चर बनाने के लिए है। लॉन्चर का _building_ मैक/लिनक्स पर किया जा सकता है लेकिन परिणामस्वरूप लॉन्चर केवल विंडोज़ पर ही चलाएगा। –

उत्तर

1

मुझे लगता है कि आप सुरक्षित रूप से मान सकते हैं कि जेआरई पहले से ही मैक पर मौजूद है।

सबसे अच्छा प्रारूप (इसलिए मुझे बताया गया है - मैं खुद मैक उपयोगकर्ता नहीं हूं) एक "ऐप" बंडल का tar.gz (फ़ाइल विशेषताओं को संरक्षित करने के लिए) है।

आप एक उचित मैक "बंडल" बनाने के लिए "जर्बंडलर" (http://sourceforge.net/projects/jarbundler/) का उपयोग कर सकते हैं जिसे आगे के बिना निकाला जा सकता है। सुनिश्चित करें कि बंडल में शामिल स्टब को एंटी tar कार्य के भीतर से "निष्पादन योग्य" के रूप में चिह्नित किया गया है।

मुझे लगता है कि एक से अधिक जेआरई स्थापित होने पर कुछ समस्याएं हैं। उस स्थिति में सही स्टब का उपयोग जेआरई संस्करण को शुरू करने के लिए किया जाना चाहिए जिसे आपके आवेदन की ज़रूरत है। http://informagen.com/JarBundler/

+0

"मुझे * एक एम्बेडेड जेरे * के साथ एक स्विंग एप्लिकेशन * भेजना होगा" शायद इसका मतलब है कि पहले से इंस्टॉल किए गए बारे में कोई धारणा बेकार है। – OrangeDog

+0

@ ऑरेंजडॉग: लेकिन ओपी ने यह भी कहा: "* इसलिए मैं वास्तव में क्या कर सकता हूं इसके बारे में मैं उलझन में हूं * –

+1

@a_horse_with_no_name आप सुरक्षित रूप से मैक पर जेआरई हमेशा मौजूद नहीं मान सकते हैं। जैसा कि आप अब 10.8.2 पर ऐप्पल से हाल के जावा अपडेट के साथ देखते हैं, वे पूरी तरह से जावा 6 सिस्टम पैकेज प्रदान करने की प्रक्रिया से बाहर निकल रहे हैं। –

3

java.net पर appbundler परियोजना पर एक नज़र डालें: मुझे याद है सही ढंग से इस स्टब /System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub

में स्थित है वहाँ एक पेज इंगित करता है कि वहाँ और Java7 के साथ समस्याओं jarbundler हो सकता है। यह एक चींटी कार्य प्रदान करता है जो आपके एप्लिकेशन को सामान्य मैक .app बंडल के रूप में पैकेज करेगा, और वैकल्पिक रूप से एक एम्बेडेड जेआरई शामिल कर सकता है।

मैक पर पूरा जावा लैंडस्केप इस समय एक गड़बड़ है क्योंकि हम अभी भी संक्रमणकालीन अवधि में हैं जहां जावा 6 रिलीज की आपूर्ति और रखरखाव ऐप्पल और जावा 7 रिलीज ओरेकल से सीधे आती है। a_horse_with_no_name द्वारा निर्दिष्ट जर्बंडलर प्रोजेक्ट एक जेएआर को .app बंडल के रूप में लपेटने के लिए है जो मैक ओएस एक्स 10.5/6/7 के साथ शामिल ऐप्पल-आपूर्ति किए गए जावा 6 पर चलता है, लेकिन ओरेकल जावा 7 पर नहीं, बल्कि ऐपबंडलर लक्ष्य ओरेकल जावा 7 और इसके .app बंडल जावा 6 पर नहीं चलेंगे।

यदि आप हालिया मैक को 10.7 या 10.8 चलाना लक्षित करना चाहते हैं, और विशेष रूप से यदि आप मैक ऐप स्टोर के माध्यम से अपना ऐप वितरित करना चाहते हैं, तो आपको चाहिए एपबंडलर का उपयोग करें और जेआरई की एक प्रतिलिपि बंडल करें। यदि आप स्टोर के माध्यम से वितरित नहीं करना चाहते हैं तो एम्बेडेड जेआरई वैकल्पिक है। यदि आपका ऐप जावा 6 पर चलाया जा सकता है तो जारबंडलर के साथ ऐप्पल जावा 6 को लक्षित करने का मतलब यह होगा कि आपका ऐप पुराने (< = 10.6) मैक पर चल सकता है। लेकिन फिर हालिया मैक वाले किसी भी व्यक्ति के पास केवल जावा 7 को जावा 6 को डाउनलोड और इंस्टॉल करने के लिए कहा जाएगा जब वे आपके ऐप को आजमाएंगे और चलाएंगे।

यह Contents/MacOS निर्देशिका (और एम्बेडेड JRE में उपयुक्त फ़ाइलें यदि लागू हो) कुछ ऐप्लिकेशन के अंदर में सब कुछ के रूप में एक .zip संग्रह में .app वितरित करने के लिए, जब तक ज़िप फ़ाइल में अनुमति पर अमल के साथ चिह्नित है ठीक है। यदि आप चींटी के साथ निर्माण कर रहे हैं तो आपको <zipfileset> एस दाएं filemode के साथ उपयोग करने की आवश्यकता होगी।

+0

'जावाबंडलर' के साथ कौन सा जावा संस्करण लक्षित है, केवल एक मामला है जिसे स्टब शामिल किया गया है यदि मुझे गलत नहीं है। तो यदि कोई जावा 7 के लिए स्टब पकड़ सकता है तो इसका उपयोग जर्बंडलर के लिए भी किया जा सकता है। मैंने जावा 5 से जावा 6 तक अपग्रेड के लिए यह किया (स्पष्ट रूप से अन्य मैक उपयोगकर्ताओं की मदद से)। एक ज़िप फ़ाइल काम नहीं करेगी क्योंकि आप ज़िप फ़ाइल में निष्पादित अनुमतियां निर्दिष्ट नहीं कर सकते हैं, केवल तारा फ़ाइल में। –

+1

@a_horse_with_no_name जावा 7 के लिए कोई स्टब नहीं है जो ऐप्पल जावा द्वारा उपयोग किए जाने वाले 'Info.plist' प्रारूप के साथ संगत है, ओरेकल संस्करण स्टब से वीएम लॉन्च करने के लिए एक अलग एपीआई का उपयोग करते हैं। और एक ज़िप फ़ाइल _can_ अनुमति अनुमति जानकारी (तकनीकी रूप से यह मुख्य spec के भाग के बजाय एक infozip एक्सटेंशन है, लेकिन यह एक वास्तविक तथ्य है)। –

+0

आह, मुझे स्टब के बारे में पता नहीं था। लेकिन मैंने कभी एक ज़िप फ़ाइल नहीं देखी है जिसमें फ़ाइल अनुमतियां हैं (और मुझे नहीं लगता कि चींटियों का ज़िप कार्य बिल्कुल इसका समर्थन करता है)। क्या आप मुझे इसके लिए एक संदर्भ दे सकते हैं? –

2

सबसे आसान दृष्टिकोण Java Web Start के माध्यम से तैनात किसी भी अन्य प्लेटफॉर्म के रूप में उसी JAR का उपयोग करता है। मैंने जेआरई स्थापित करने के लिए इसका इस्तेमाल कभी नहीं किया है।

सबसे अच्छा दृष्टिकोण एक अधिक मैक अनुकूल अनुभव प्रदान करने के लिए एक आवेदन बंडल में आपकी जार (s), लेख के उद्धृत here में चर्चा रैप करने के लिए की आवश्यकता है। पसंदीदा वितरण प्रारूप एक संपीड़ित disk image, .dmg है।

लेख Java Deployment Options for Mac OS X दोनों विकल्पों की तुलना करता है। यह game एक उदाहरण है जिसे किसी भी तरह से लॉन्च किया जा सकता है।

परिशिष्ट: उत्सुकता के लिए, मैक ओएस एक्स फाइंडर .jnlp फ़ाइलों को दस्तावेजों के रूप में मानता है, जो डिफ़ॉल्ट रूप से जेडब्लूएस लॉन्चर के साथ खोला जाता है। मैं त्वरित उपयोग के लिए किसी डॉक फ़ोल्डर में अक्सर उपयोग की जाने वाली .jnlp फ़ाइलों का एक फ़ोल्डर रखता हूं। जावा प्राथमिकता नियंत्रण कक्ष कैश्ड अनुप्रयोगों को प्रबंधित करने की अनुमति देता है। शॉर्टकट स्थापित करने का चयन गंतव्य फ़ोल्डर में एक साधारण मैक एप्लिकेशन बंडल बनाता है, और शामिल Info.plist किसी अन्य की तरह संपादित किया जा सकता है। .plist को अनुकूलित करने का निर्णय एप्लिकेशन की सुविधाओं के बारे में बताता है: स्क्रीन मेनू बार, डॉक नाम और आइकन, जेएनआई पथ, आदि

+0

क्या तुलनात्मक सूची ओएस एक्स के लिए बिल्कुल सही है आवेदन बंडल? ओटीओएच 1) ए) जेडब्ल्यूएस डेस्कटॉप शॉर्टकट्स काम नहीं करते हैं? बी) जेडब्ल्यूएस एप्स मत करो। विंडोज़ 'प्रोग्राम जोड़ें/निकालें' एप्लेट के ओएस एक्स समकक्ष में दिखाई देते हैं? 2) क्या यह संभव नहीं है? 3) प्रतीक! मुझे एक ब्रेक दें .. 4) कोई तर्क नहीं। 5) जेएनएलपी में रुचि निर्दिष्ट करके दस्तावेज़ प्रकार उपलब्ध हैं ..तो उस सूची में कुछ संदिग्ध, और एक या दो वास्तव में संदिग्ध बयान। आगे स्पष्टीकरण की सराहना की जाएगी –

+1

@AndrewThompson: मैंने 1 (ए और बी) की मेरी (हाल ही में अधिग्रहित) समझ को विस्तारित करने की कोशिश की है। मुझे 2 के करीब देखना होगा) 5 के माध्यम से)। – trashgod