2011-11-12 12 views
5

यदि आपने कभी Minecraft नहीं खेला है, तो इस तरह लॉन्चर के यांत्रिकी काम करते हैं।बाहरी जैर फ़ाइलों को लॉन्च करने के लिए क्या आवश्यक है, जैसे कि Minecraft लॉन्चर?

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

यह कैसे करता है?

मैं वर्तमान में कार्यक्षमता को दोहराने की कोशिश कर रहा हूं, हालांकि, जब मैं इसे लॉन्च करने का प्रयास करता हूं, तब मैं ग्रहण में एक चलने योग्य जेएआर के रूप में निर्यात करता हूं, यह प्रिंट करता है "मुख्य क्लास लॉन्चर.जर नहीं मिला। प्रोग्राम बाहर निकल जाएगा" (यह कंसोल पर है, मैं) जार डबल क्लिक करने के लिए सक्षम होना चाहते हैं और इसे लॉन्च किया है

File file = new File(System.getProperty("user.dir") + "/lessur.jar"); 
System.setProperty("org.lwjgl.librarypath", System.getProperty("user.dir") + "natives"); 
URLClassLoader classLoader; 
classLoader = URLClassLoader.newInstance(new URL[]{file.toURI().toURL()});   
classLoader.loadClass("zombie.engine.Lighting2").newInstance(); 

उत्तर

3

Runnable जार एक प्रकट इंगित करता है कि मुख्य वर्ग का उपयोग करने की जरूरत है। ग्रहण से निर्यात करते समय, एक विकल्प एक रन कॉन्फ़िगरेशन (उदाहरण के लिए पिछले परीक्षण रन से) का चयन करना है और ग्रहण उस जानकारी का उपयोग मैनिफेस्ट को पॉप्युलेट करने के लिए करता है।

अद्यतन: ऊपर दिए गए आउटपुट और नीचे टिप्पणियों के आधार पर थोड़ा और सोचने के बाद, मेरा अनुमान है कि आप कमांड लाइन से 'जावा' कमांड का उपयोग करके जार चलाने की कोशिश कर रहे हैं। अगर ऐसा है, तो आप उपयोग करने की आवश्यकता:
java -jar launcher.jar
नहीं :
java launcher.jar

यहाँ मैं तुम्हें क्या लगता है की एक प्रजनन है देखें:

C:\Users\Tim\Desktop>java launcher.jar
Exception in thread "main" java.lang.NoClassDefFoundError: launcher/jar Caused by:
java.lang.ClassNotFoundException: launcher.jar
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: launcher.jar. Program will exit.

C:\Users\Tim\Desktop>java -jar launcher.jar
Ran

+0

मैंने यह किया है, यहां निर्यात किए गए जेएआर - मैनिफेस्ट-वर्जन से MANIFEST.MF की सामग्री है: 1.0 सी लस-पथ:। मुख्य श्रेणी: मुख्य – liamzebedee

+0

संभवतः आपके पास उस जेएआर में 'Main.class' (कोई पैकेज नहीं है) नामक एक कक्षा है और उस वर्ग में उचित रूप से स्वरूपित 'मुख्य' फ़ंक्शन है? –

+0

हाँ मैं वास्तव में – liamzebedee

1
// Use the File constructor that will insert the correct separator for the OS 
File file = new File(System.getProperty("user.dir"), "lessur.jar"); 
System.out.println("File exists: " + file.exists()); 
File libs = new File(System.getProperty("user.dir"), "natives"); 
System.out.println("Libs exists: " + libs.exists()); 
System.setProperty("org.lwjgl.librarypath", libs.toString()); 
संबंधित मुद्दे