2011-08-22 3 views
9

मेरे पास एक जावा समृद्ध क्लाइंट डेस्कटॉप ऐप है। कि मैं काम पर कुछ कंप्यूटरों पर वितरित करना चाहता हूं, लेकिन मैंने पहले कभी ऐसा कुछ नहीं किया है। लोग मेरे कार्यस्थल पर बहुत कंप्यूटर-savy नहीं हैं और चूंकि यह एक छात्र नौकरी है, मैं वहां बहुत अधिक समय तक नहीं रहूंगा और मैं इसे पसंद करूंगा यदि मैं अपने कार्यक्रम को चलाने के लिए आसान बना सकता हूं -इस पर क्लिक करें।मेरे जावा प्रोग्राम को वितरित करने के लिए कैसे करें ताकि यह एक फ़ाइल को डबल-क्लिक करके चलाया जा सके?

मैं इसे चलाने के लिए मैन्युअल रूप से जेआरई स्थापित नहीं करना चाहता हूं। असल में, मैं क्या जानना चाहता हूं कि मेरे जावा एप्लिकेशन को डबल-क्लिक करके आसानी से कैसे चलाया जा सकता है (भले ही यह केवल विंडोज़ पर है, ठीक है)। मुझे पूरा यकीन है कि मुझे सही जेआरई संस्करण को पैकेज करने की आवश्यकता होगी, लेकिन मुझे नहीं पता कि ऐसा करने का सही तरीका क्या है।

मैंने कुछ साइटों पर पढ़ा है कि आपको अपने कार्यक्रम के साथ जेआरई पैकेज नहीं करना चाहिए क्योंकि इससे लोगों के कई अलग-अलग संस्करण होते हैं, जिनमें से कुछ पुराने हैं, और इससे सुरक्षा समस्याएं होती हैं, लेकिन यह इस मामले में कोई समस्या नहीं है चूंकि कंप्यूटर जो मेरे एप्लिकेशन को चलाने जा रहे हैं वे इंटरनेट से कनेक्ट नहीं हैं और केवल इस प्रोग्राम को चलाने के लिए उपयोग किए जाते हैं।

कुछ हद तक संबंधित प्रश्न: चूंकि मेरा आवेदन वर्तमान में एक ग्रहण प्रोजेक्ट है, इसलिए मुझे अपने संसाधन जैसे आइकन, छवियों, SQLite डेटाबेस (पढ़ने और लिखने के लिए) आदि प्राप्त होते हैं। सापेक्ष पथ (उदाहरण: img/test.png) का उपयोग करते हुए।

क्या मुझे पैक किए जाने के दौरान भी काम करने के लिए उन पथों में से किसी एक को बदलना होगा?

+1

http://stackoverflow.com/questions/147181/how-can-i-convert-my-java-program-to-an-exe-file –

+0

@ एंड्रयू थॉम्पसन हाँ, यह –

+1

भी है [टैग: जावा-वेब-शुरू]। – trashgod

उत्तर

7

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

+0

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

1

समस्या को डबल क्लिक करके चलाने के लिए आप इसे jar फ़ाइल या jar फ़ाइल पर कॉल करने के लिए बैच फ़ाइल के रूप में वितरित कर सकते हैं।
स्थापना भाग के लिए आप एक बैच फ़ाइल बना सकते हैं जो जांचता है कि जावा मौजूद है या नहीं और फिर इंस्टॉलर को कॉल करें यदि यह नहीं है।
संपादित करें:
बैच कोड:

IF DEFINED JAVA GOTO ok 
java-installer.exe 
GOTO end 
:ok 
your-application.jar 
:end 
+0

बहुत अच्छा लगता है, लेकिन यह केवल यह देखने के लिए जांच नहीं करेगा कि कोई जावा संस्करण मौजूद है या नहीं? आइए मान लें कि स्थापित जावा संस्करण 1.3 है और मैं अपने विकास पर्यावरण में 1.6 का उपयोग कर रहा हूं, क्या इससे समस्याएं नहीं आतीं? –

4

आसान के लिए एक बेहतर विकल्प एक जावा अनुप्रयोग के स्थापित करें। एक जीयूआई के साथ इसे Java Web Start का उपयोग करके लॉन्च करना है। उपयोगकर्ता के लिए, जेडब्लूएस 'एक क्लिक' स्थापना विकल्प है जो (& ऐप लॉन्च कर सकता है।) डेस्कटॉप शॉर्टकट्स और मेनू आइटम जोड़ें। एक जेडब्लूएस लॉन्च का मतलब आपके लिए कुछ और काम होगा, लेकिन यह अंतिम उपयोगकर्ता के लिए एक हवा है।

यह सुनिश्चित करने के लिए कि उपयुक्त जेआरई ऐप चलाने के लिए मौजूद है। deployJava.js का उपयोग करें (अधिक जानकारी के लिए जेडब्लूएस लिंक देखें)। आपके स्थानीय नेटवर्क से जेआरई इंस्टॉलर प्राप्त करने के लिए स्क्रिप्ट को पुन: कॉन्फ़िगर करने की आवश्यकता होगी - डिफ़ॉल्ट इसे ओरेकल से प्राप्त करना है।

अधिकांश संसाधनों को जार फ़ाइलों में पैक किया जाना चाहिए और ऐप के साथ आपूर्ति की जानी चाहिए, लेकिन डीबी के लिए, डीबी इंस्टॉलर को कॉल करने के लिए JNLP ExtensionInstallerService का उपयोग करें।


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

जिस तरह से यह काम करेगा, वह स्थानीय इंट्रानेट पर एक वेब पेज होना है। जब उपयोगकर्ता पृष्ठ पर जाता है, तो स्क्रिप्ट एक उपयुक्त जेआरई के लिए जांचता है।

  • यदि यह मौजूद है, तो यह लॉन्च फ़ाइल के लिंक को लिखता है।
  • यदि कोई जेआरई नहीं है, या संस्करण बहुत कम है, तो यह उपयोगकर्ता को इसे स्थापित करने के माध्यम से मार्गदर्शन करेगा (संकेत मिलने पर उन्हें 'ठीक' पर क्लिक करने का मामला)। फिर यह ऐप को लिंक डाल देगा।

मैं फिर हमारे नेटवर्क पर सर्वर से जेआरई को पकड़ने के लिए लिंक कॉन्फ़िगर कर सकता हूं।

वह हिस्सा है जहां आपको स्क्रिप्ट को पुन: कॉन्फ़िगर करने की आवश्यकता है। AFAIR स्क्रिप्ट एक यूआरएल का खुलासा करती है जिस पर जेआरई की तलाश है - जिसे इंट्रानेट पर किसी स्थान पर इंगित किया जा सकता है।

.. तो "वेब" केवल नाम में है, कंप्यूटर को इस काम के लिए इंटरनेट से कनेक्ट करने की ज़रूरत नहीं है, है ना?

हां। जेडब्ल्यूएस जावा समृद्ध ग्राहकों के लिए एक महान लॉन्च तकनीक है, लेकिन यह एक खराब चुना गया नाम है।

+0

मैं देखता हूं, जानकारी के लिए बहुत बहुत धन्यवाद, यह निश्चित रूप से काम में आ जाएगा! बस यह सुनिश्चित करने के लिए कि मैं सही ढंग से समझता हूं, जावा वेब स्टार्ट एक प्रकार का लिंक है (या मैं इसे डेस्कटॉप पर शॉर्टकट बना सकता हूं) कि उपयोगकर्ता जेआरई स्थापित करने के लिए क्लिक करेंगे और जेआरई स्थापित नहीं होने पर प्रोग्राम चलाएंगे, या जेआरई कंप्यूटर पर मौजूद होने पर प्रोग्राम चलाएं। इसके बाद मैं अपने नेटवर्क पर सर्वर से जेआरई को पकड़ने के लिए लिंक कॉन्फ़िगर कर सकता हूं। तो "वेब" केवल नाम में है, कंप्यूटर को इस काम के लिए इंटरनेट से कनेक्ट करने की ज़रूरत नहीं है, है ना? –

+0

संपादन देखें। और अगर आपको वह जानकारी मिली है। आसान, मेरे जवाब को अप-वोट करने के लिए स्वतंत्र महसूस करें। ;) –

+0

बीटीडब्ल्यू - वह पृष्ठ जहां मैंने 'ExtensionInstallerService' डेमो से लिंक किया था। बहुत सारे * आत्मनिर्भर * उदाहरण हैं। वे सभी कोड के साथ आते हैं, साथ ही एक बिल्ड फ़ाइल जो ग्रहण जैसे प्रमुख आईडीई में आयात करना आसान होना चाहिए। उन्हें यह महसूस करने के लिए जाएं कि यह कैसे काम करता है और यह आपके और आपके उपयोगकर्ताओं के लिए क्या कर सकता है। –

0

यदि आपको उपरोक्त विधियों को लागू करना कठिन लगता है। आप इस सरल दृष्टिकोण के साथ आगे बढ़ सकते हैं।

किसी स्थान पर फ़ोल्डर lib बनाएँ। उन सभी जारों को रखें जिन पर आपका एप्लिकेशन इसका उपयोग करता है। यदि आप अपने आवेदन के लिए एक जार बनाने में सक्षम हैं, तो आप भी अपने आवेदन.जर को lib फ़ोल्डर में बहुत अच्छी तरह से रख सकते हैं। उसी स्थान पर बैच फ़ाइल बनाएं जिसमें आपके मुख्य वर्ग के लिए जावा कमांड होगा। अपने बैच में पाठ इस के समान कुछ दिख सकता है:

set path="\lib\" 
java -cp %path% package1.package2.MainClass 

आप पूर्व के लिए किसी अन्य निर्भरता है, तो: यदि आप img/icon.jpg के तहत अपने कोड में छवियों का उपयोग करें। फिर आपको आईएमजी फ़ोल्डर को इस स्थान पर भी स्थानांतरित करना होगा।

बस इन फ़ाइलों को Winrar का उपयोग करके ज़िप करें और इसे साझा करें। ज़िप निकालने के बाद बैच फ़ाइल को चलाने से आपके जावा मेनक्लास को उस स्थान के बावजूद लॉन्च किया जाएगा जिसमें इसे क्लाइंट सिस्टम में रखा गया है।

पीएस: यदि आप अपने आवेदन के लिए जार बनाने और इसे lib फ़ोल्डर में रखने में असमर्थ हैं, तो बस अपने बिन फ़ोल्डर को क्लास फाइलों के साथ कॉपी करें और इसे स्थान पर पेस्ट करें और बेंच के अंदर कक्षाओं को देखने के लिए बैच फ़ाइल को तदनुसार बदलें ।

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

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