2010-02-06 13 views
5

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

उत्तर

3

मेरा मानना ​​है कि 'मुख्य वर्ग' के उद्देश्य का अर्थ है कि अंतिम जेएआर 'मेनिफेस्ट फ़ाइल, एक वर्ग को' कक्षा चलाने के लिए 'लेबल करेगी: ताकि अंतिम उपयोगकर्ता इसे डबल-क्लिक कर सके * या बल्कि की तरह पूरे पैकेज/वर्ग के नाम निर्दिष्ट करने के लिए की तुलना में

java -jar <jar>

: की तरह एक सरलीकृत कमांडलाइन चलाने

java -cp <jar> com.yourcom.package.classname 

अगर मैं सही हूँ, तो मैं नहीं देख पा रहे हैं कि कैसे यह होगा एक से अधिक मुख्य वर्ग होने का अर्थ है? शायद मैं आपके प्रश्न को गलत समझ सकता हूं - या 'मुख्य' वर्ग का एक और उद्देश्य है?

यदि आपके पास दो वर्ग हैं जिनके पास 'मुख्य' विधि है - तो यह ठीक है - अंतिम उपयोगकर्ता नाम से किसी भी वर्ग को लॉन्च कर सकता है - और जब तक उनके पास मानक मुख्य विधि सिग है, उदाहरण के लिए:

यह सिर्फ काम करना चाहिए।

* (Windows पर कम से कम, और वह भी काम करता है कि क्या निर्भर करता है JRE वे जिस पर और शायद अन्य बातों के)

+0

2 मुख्य वर्गों का कारण सर्वर और क्लाइंट की वजह से है।एक परियोजना में निहित होने पर मैं प्रत्येक मुख्य वर्ग के लिए एक जार फ़ाइल बनाना चाहता हूं। शायद यह मेरे सवाल को स्पष्ट किया। – Zach

+0

तो आप एक परियोजना चाहते हैं और दो जार मुझे लगता है: इसलिए मुझे लगता है कि उस मामले में आपको शायद 'फ्री-फॉर्म प्रोजेक्ट' के लिए जाना होगा: ताकि आप इसे करने के लिए बिल्ड (चींटी) स्क्रिप्ट को कस्टमाइज़ कर सकें। मैं आमतौर पर उस परिदृश्य में दो परियोजनाओं पर काम करता हूं: जब तक आपको वास्तव में दो परियोजनाओं के बीच बहुत अधिक कोड साझा करने की आवश्यकता नहीं होती है: फिर तीसरी 'लाइब्रेरी' प्रोजेक्ट बनाने पर विचार करें - फिर आप इसे एक निर्भर पुस्तकालय के रूप में जोड़ सकते हैं दो। [मुझे उम्मीद है कि समझ में आता है!] – monojohnny

+0

ठीक है, मुझे लगता है कि मैं अब समझता हूं। – Zach

4

मैं कैसे Netbeans काम पता नहीं है, लेकिन यह एक से अधिक डाल कोई समस्या नहीं होनी चाहिए एक जार में मुख्य वर्ग। असल में एक मुख्य वर्ग केवल एक वर्ग है जिसमें मुख्य विधि है और एक जेएआर कक्षा फाइलों का संग्रह है।
एकमात्र प्रतिबंध यह है कि केवल एक वर्ग हो सकता है जिसे जार को डबल-क्लिक करने के साथ शुरू किया जाएगा।

प्रत्येक कक्षा को शुरू करने के लिए आपको -जर विकल्प का उपयोग नहीं करना चाहिए, लेकिन पूर्ण श्रेणी का नाम प्रदान करना चाहिए।
उदाहरण के लिए, अगर आप अपने जार में एक ग्राहक और एक सर्वर वर्ग है, क्लाइंट
java -cp file.jar Client
और सर्वर द्वारा द्वारा
java -cp file.jar Server शुरू कर दिया है।

एक विकल्प तीसरा स्टार्टर कक्षा बनाने के लिए उपयोग किया जाता है जो सर्वर या क्लाइंट को कमांड लाइन तर्क (या एक जीयूआई विंडो) के आधार पर शुरू करने के लिए उपयोग किया जाता है।

8

JAR File Specification प्रति JAR की केवल Main-Class विशेषता देता है, लेकिन JAR में कक्षाओं की मनमानी संख्या हो सकती है जो main() विधि घोषित करती है। इस तरह की किसी भी कक्षा को परियोजना के BuildPackaging संपत्ति में शामिल किया जाएगा, जब तक कि विशेष रूप से बहिष्कृत न किया जाए।

एक ठोस उदाहरण के रूप में, H2 Databasemain() साथ इन कक्षाओं में शामिल हैं:

 
org.h2.jdbcx.JdbcConnectionPool 
org.h2.tools.Backup 
org.h2.tools.ChangeFileEncryption 
org.h2.tools.Console 
org.h2.tools.ConvertTraceFile 
org.h2.tools.ConvertTraceFile 
org.h2.tools.CreateCluster 
org.h2.tools.DeleteDbFiles 
org.h2.tools.Recover 
org.h2.tools.Restore 
org.h2.tools.RunScript 
org.h2.tools.Script 
org.h2.tools.Server 
org.h2.tools.Shell 

परिशिष्ट: जाहिर है, मेरी जंक दराज परियोजना रखरखाव की जरूरत है।

 
$ find scratch/src -name \*java | xargs -J % egrep 'main[ \t]*\(Str' % | wc -l 
    109 
+0

+1 सबसे सटीक उत्तर – stacker

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