जावा फ़ाइल के साथ जार फ़ाइलों को कैसे शामिल करें और कमांड प्रॉम्प्ट में संकलित करें


121

मेरे पास 3 जार फाइलें और एक .java फाइल है जो इन जार फाइलों पर निर्भर करती है। मैं एक कमांड प्रॉम्प्ट का उपयोग करके इन जार फ़ाइलों के साथ .java फ़ाइल को कैसे संकलित करता हूं?


9
टाइप "जेवैक -हेल्प"
सीन पैट्रिक फ्लोयड


2
आशा है कि यह आपकी मदद करता है ..
फहीम पारकर

2
स्वयं पर ध्यान दें: आपको जिस जावा फ़ाइल को चलाना है, उसके नाम से पहले -cp / -classpath ध्वज का उपयोग करना चाहिए, अन्यथा यह ध्वज की उपेक्षा करेगा। java -cp ".;magic.jar" Fooठीक java Foo -cp ".;magic.jar"है ना।
दिमित्री

जवाबों:


108

आप "javac" कमांड में "-cp" विकल्प का उपयोग करके अपनी जार फ़ाइलों को शामिल कर सकते हैं।

javac -cp ".:/home/path/mail.jar:/home/path/servlet.jar;" MyJavaFile.java

"-Cp" के बजाय आप "-classpath" का भी उपयोग कर सकते हैं

javac -classpath ".:/home/path/mail.jar:/home/path/servlet.jar:" MyJavaFile.java

हर बार जब आप संकलित करते हैं, तो आप हर बार जार को शामिल कर सकते हैं। पर्यावरण चर पथ को संस्थापित करेगा जहाँ जार और कक्षाएं किसी भी जावा फ़ाइल को संकलित / निष्पादित करने के लिए उपयोग करने की आवश्यकता होती है। हर बार जब आप फ़ाइल संकलित करते हैं तो आपको व्यक्तिगत रूप से जार को शामिल नहीं करना होगा।

अलग-अलग मशीनों में क्लासपैथ को पर्यावरण चर के रूप में सेट करने के लिए अलग-अलग तरीके हैं। विंडोज, लिनक्स, आदि के लिए कमांड अलग हैं।

आप इस ब्लॉग में अधिक जानकारी पा सकते हैं ।

http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html

7
javac -classpath ".:/home/path/mail.jar;/home/path/servlet.jar" MyJavaFile.javaमेरे लिए काम किया। मैं मैक का उपयोग कर रहा था। मैंने कहीं पढ़ा है कि ':' का उपयोग यूनिक्स के लिए किया जाता है।
श्री

2
मैंने इस कमांड का उपयोग किया है, लेकिन जब जार फ़ाइल में मौजूद क्लास को एक्सेस करने का प्रयास किया गया है, तो मुझे ClassNotFoundException मिल रही है।
मोहम्मद रामपुरवाला

3
क्या करता .:है? क्षमा करें यदि यह एक गूंगा प्रश्न है, लेकिन यह मेरे लिए स्पष्ट नहीं है।
मिरांडा

1
@kensen। टाइपिंग की गलती। प्रतिस्थापित करें: (बृहदान्त्र) अर्धविराम (;) के साथ
पंकज शिंदे

ऊपर ubuntu पर मेरे लिए काम नहीं किया। मैंने बिना उद्धरण चिह्न के प्रयास किया और यह काम कर गया। पूर्व। javac -cp .:/home/path/mail.jar:/home/path/servlet.jar; MyJavaFile.java
अल्फाज जिकानी

24

कृपया लिनक्स पर प्रयास करें

javac -cp jarfile source file 

उदाहरण :-

javac  -cp .:/jars/* com/template/*.java

जब मैं उदाहरण का प्रयास करता हूं : - , .:/jarsउस निर्देशिका के साथ जिसमें मेरी JAR फाइलें स्थित हैं, मुझे त्रुटि संदेश मिलता है javac: invalid flag: /location/of/first/jar/file.jar
आर्टुरो डॉन जुआन


20

सिंटैक्स विंडोज़ डॉस कमांड पर काम करेगा:

javac -cp ".;first.jar;second.jar;third.jar" MyJavaFile.java

4
उपरोक्त कमांड के सफल निष्पादन के बाद जावा क्लास फाइल कैसे चलाएं?
यश अग्रवाल

java -cp first.jar: second.jar: third.jar MyFile
कृष्णा चैतन्य

15

पर्यावरण चर सेटिंग्स के माध्यम से अपने वर्ग पथ में सभी निर्भरता जार फ़ाइलों को जोड़ने या नीचे दिए चरणों का उपयोग करने का प्रयास करें:

  1. ओपन कमांड प्रॉम्प्ट।
  2. निर्देशिका को आप जावा फ़ाइल के स्थान में बदलें जिसे आप संकलित करना चाहते हैं।
  3. नीचे दिखाए अनुसार अपनी निर्भरता जार फ़ाइलों के लिए classpath सेट करें:

    set classpath=C:\Users\sarath_sivan\Desktop\jars\servlet-api.jar; C:\Users\sarath_sivan\Desktop\jars\spring-jdbc-3.0.2.RELEASE; C:\Users\sarath_sivan\Desktop\jars\spring-aop-3.0.2.RELEASE;

  4. अब, आप अपनी जावा फ़ाइल संकलित कर सकते हैं। (आदेश: javac YourJavaFile.java)

आशा है कि यह आपकी निर्भरता के मुद्दे को हल करेगा।


15

अनुगमन कदम हैं,

  1. सभी जार और अपने .java फ़ाइल को एक ही फ़ोल्डर में कॉपी करें (लंबे पथ का उल्लेख करने के बजाय फ़ाइल नामों का उल्लेख करना आसान होगा। हालाँकि आप जार और .java को अलग-अलग फ़ोल्डरों में रख सकते हैं)।

  2. संकलन करना,

    javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
  3. निष्पादन हेतु,

    java -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>

आशा है कि ये आपकी मदद करेगा!


1
कैसे निष्पादित करने के लिए दिखाने के लिए धन्यवाद। डॉट कोलन फिर से क्या करता है? यह वर्तमान निर्देशिका और फ़ाइल विभाजक है?
क्लार्क

हाँ यह वर्तमान निर्देशिका और यूनिक्स फ़ाइल विभाजक है (विंडोज पर यह एक अर्धविराम है)।
मथुसम मट

6

यह .class फ़ाइल बनाएगा:

javac -classpath "[jarname with specified path]" [java filename]

यह वर्ग फ़ाइल निष्पादित करेगा:

java -cp [jarname with specified path]: [java filename]

1
जावा कमांड द्वारा त्रुटि दिखाई जा रही है: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory मैं ** javac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar" MyFile.javaऔर ** रन java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile.java also i tried java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile
यश अग्रवाल


2

आपको संकलन समय के साथ-साथ रनटाइम में निर्भरता निर्दिष्ट करने की आवश्यकता है

इस प्रारूप का उपयोग करने के लिए

javac -cp "*.jar;classfile_path" filename.java

उदाहरण:

javac -cp "ojdbc6.jar;c:\programs" Main.java

यह उत्तर, जबकि सही है, वास्तव में ऐसा कुछ भी जोड़ना प्रतीत नहीं होता है जो अन्य उत्तर पहले से नहीं कहते हैं। यदि इस और दूसरे उत्तरों के बीच कुछ महत्वपूर्ण अंतर है, तो यह बताना बेहतर होगा कि आपका उत्तर अलग क्यों है।
डेवडेवडेव

आपने रनटाइम के साथ-साथ संकलन समय पर निर्भरता का उल्लेख किया है, लेकिन यह नहीं समझाएं कि उन्हें रनटाइम पर कैसे निर्दिष्ट किया जाए।
माइकल फुल्टन

1

परिवर्तन कार्य करने के बाद कुछ समय:

java -cp ".;%CLASSPATH%" classfilename 

नोट: विंडोज पर। इसके $CLASSPATHबजाय लिनक्स का उपयोग करें ।


1
javac -cp jars/jar1:jars/jar2:jars/jar3 abc.java

5
हालांकि यह कोड प्रश्न को हल कर सकता है, जिसमें यह भी बताया गया है कि यह समस्या कैसे और क्यों हल करती है, इससे वास्तव में आपके पोस्ट की गुणवत्ता को बेहतर बनाने में मदद मिलेगी, और संभवत: अधिक वोट मिले। याद रखें कि आप भविष्य में पाठकों के लिए सवाल का जवाब दे रहे हैं, न कि केवल उस व्यक्ति से जो अब पूछ रहा है। कृपया स्पष्टीकरण जोड़ने के लिए अपने उत्तर को संपादित करें और संकेत दें कि क्या सीमाएँ और मान्यताएँ लागू होती हैं।
डबल बीप

0

यदि आप उबंटू का उपयोग कर रहे हैं:

/opt/JavaServices/sqlite $ export CLASSPATH=/opt/JarFiles/XXXX.jar:/opt/JarFiles/XXXX.jar:/opt/JavaServices/;javac SQLiteSample.java

फ़ोल्डर स्थान पर जाएं (पैकेज संरचना से बाहर)

/opt/JavaServices $ export CLASSPATH=/opt/JarFiles/XXXXX.jar:/opt/JarFiles/XXXXX.jar:/opt/JavaServices/;java sqlite.SQLiteSample

नोट: कृपया फ़ाइल स्थान और पैकेज नाम देखें


-1

विंडोज के लिए

  1. उस निर्देशिका से कनेक्ट करें जहां जावा फ़ाइल कमांड प्रॉम्प्ट पर मौजूद है।
  2. classpath सेट करें (यहाँ d = फ़ोल्डर नाम) set classpath = C: \ d1 \ d2 \ d3 \ d4 \ d5 \ d6 \ d7.jar;
  3. प्रेस दर्ज करें और
  4. अब java फाइल javac filename.java को संकलित करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.