जार फ़ाइल में वर्ग चलाएँ


176

यदि आपके पास एक jar फ़ाइल है जिसे / myfoldermyJar.jar में स्थित कहा जाता है और आप उससे प्राप्त वर्ग का उपयोग करना चाहते हैं myClass, तो आप इसे कमांड लाइन से कैसे करते हैं?

मैंने सोचा कि यह निर्देशिका में जाकर कहना होगा java -cp myJar.jar.myClassलेकिन यह काम नहीं कर रहा है। किसी भी सहायता की सराहना की जाएगी।


java -cp myJar.jar myClassमेरे लिए ठीक काम करता है - क्या आपके पास अंतरिक्ष के बजाय अपनी कमांड लाइन में एक शानदार अवधि है?
क्रिस डोड

1
जब आप कहते हैं कि आप उस वर्ग का उपयोग करना चाहते हैं, तो आपका क्या मतलब है? क्या कोई मुख्य विधि है जिसे आप विशेष रूप से कॉल करना चाहते हैं?
मार्सेलस वालेस

जवाबों:


256

का उपयोग करें java -cp myjar.jar com.mypackage.myClass

  1. अगर क्लास पैकेज में नहीं है तो बस java -cp myjar.jar myClass

  2. यदि आप उस निर्देशिका के भीतर नहीं हैं जहां myJar.jarस्थित है, तो आप यह कर सकते हैं:

    1. यूनिक्स या लिनक्स प्लेटफार्मों पर:

      java -cp /location_of_jar/myjar.jar com.mypackage.myClass

    2. विंडोज पर:

      java -cp c:\location_of_jar\myjar.jar com.mypackage.myClass


10
बस इसे जोड़कर - मामले में com.mypackage.myClass (उपरोक्त उदाहरण में) अन्य जार पर निर्भरता है, इसे निम्नानुसार चलाएं: java -cp dependfile1.jar; dependfile2.jar; c; स्थान: location_of_jar \ myjar.jar कॉम; mypackage.myClass
akjain

2
यदि यह काम नहीं करता है, तो यह देखने के लिए एक संभावित विफलता पथ है: सुनिश्चित करें कि आपकी कक्षा के लिए पूरी तरह से योग्य पथ आपके जार फ़ाइल में बिल्कुल मेल खाता है। यदि आप unzip -l /location-of-jar/myjar.jar करते हैं, और com / mypackage / myClass के अलावा कुछ देखते हैं, तो यह आपकी समस्या है। (उदाहरण के लिए, यदि आप बिन / कॉम / mypackage / myClass देखते हैं, तो आपको अपनी जार फ़ाइल बनाने के लिए बिन में cd'ed होना चाहिए; आपके पास क्या काम नहीं होगा।)
स्कॉट सी विल्सन

MyClass का उपयोग करें, MyClass का नहीं
Breno Inojosa

उपरोक्त प्रयास करके मुझे थ्रेड में मुख्य त्रुटि मिल रही है "java.lang.NoClassDefFoundError: ककड़ी / एपी / क्ली / मुख्य com.company.project.demo.bdd.runner.Execute.main (Execute.java:20) ) इसके कारण: java.lang.ClassNotFoundException: cucumber.api.cli.Main at java.net.URLClassLoader.findClass (अज्ञात स्रोत) java.lang.ClassLoader.loadClass (अज्ञात स्रोत) पर sun.misc.Launcher $ AppClassLoer ऐप। loadClass (अज्ञात स्रोत) java.lang.ClassLoader.loadClass (अज्ञात स्रोत) पर ... 1 और
वैभव_शर्मा


18

जावा में दो प्रकार की JAR फाइलें उपलब्ध हैं:

  1. रनने योग्य / निष्पादन योग्य जार फ़ाइल जिसमें प्रकट फ़ाइल होती है। एक रन करने योग्य जार को चलाने के लिए आप उपयोग कर सकते हैं java -jar fileName.jarयाjava -jar -classpath abc.jar fileName.jar

  2. सरल जार फ़ाइल जिसमें एक मैनिफ़ेस्ट फ़ाइल नहीं होती है ताकि आप बस अपना मुख्य वर्ग अपना रास्ता देकर चला सकें java -cp ./fileName.jar MainClass


6

मान लें कि आप उस निर्देशिका में हैं जहाँ myJar.jarफ़ाइल है और उस myClassपर एक public static void main()विधि है:

आप निम्न कमांड लाइन का उपयोग करते हैं:

java -cp ./myJar.jar myClass

कहाँ पे:

  1. myJar.jarमें है वर्तमान पथ , ध्यान दें कि .सबसे सिस्टम पर वर्तमान पथ में नहीं है। एक पूरी तरह से योग्य पथ के साथ-साथ यहां पसंद किया जाता है।

  2. myClassएक है पूरी तरह से योग्य पैकेज पथ वर्ग के लिए, उदाहरण मानता है कि myClassमें है डिफ़ॉल्ट पैकेज जो बुरा व्यवहार है, अगर यह एक नेस्टेड पैकेज यह होगा में है com.mycompany.mycode.myClass


1

यह निष्पादित करने का सही तरीका है .jar, और इसमें जो भी एक वर्ग .jarहोना चाहिए main()और निम्नलिखित इसके पैरामीटर हैं:

java -DLB="uk" -DType="CLIENT_IND" -jar com.fbi.rrm.rrm-batchy-1.5.jar
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.