मैं .java फ़ाइल से एक JAR कैसे बनाऊँ?


88

मैं एक जावा एप्लिकेशन (अनुप्रयोग नहीं है कि परियोजनाओं, लेकिन एक परियोजना के भीतर आवेदन;। जावा ) का उपयोग करके एक सरल कार्यक्रम लिख रहा था जिसमें एक भी फ्रेम है। दोनों फाइलें .java की हैं, इसलिए मैं JAR द्वारा आवश्यक प्रकट नहीं लिख सकता ।

MyApp.java , आयात तो सार्वजनिक वर्ग पैकेज के साथ एक वर्ग की तरह शुरू होता है MyAppऔर एक मुख्य कार्य है, लेकिन यह अभी भी जावा फाइल है! मैं इसे JDeveloper 11g में लिख रहा हूँ अगर यह मदद करता है।

किसी भी विचार कैसे इन फ़ाइलों से एक जार बनाने के लिए?


1
मुझे लगता है कि ANT या मावेन जैसे पैकेजिंग टूल का उपयोग करके यह बहुत आसान हो सकता है
चूर मार्क

चक से सहमत। ANT पर एक नज़र डालें। आईडीई विकसित करने के लिए महान हैं, लेकिन आपको यह समझने की आवश्यकता है कि चीजें कैसे काम करती हैं। जावा फ़ाइलों को javac से .class फ़ाइलों के माध्यम से संकलित किया जाता है, इसके बाद .class फ़ाइलों को जार कमांड के साथ जार में पैक किया जा सकता है। (चींटी के पास ऐसा करने के लिए कार्य हैं, यहां तक ​​कि जेडडॉलर के पास ऐसा करने के लिए कुछ जादूगर हैं)।
बिगमीक

JDeveloper में जार फ़ाइलों को बनाने की क्षमता होनी चाहिए। एक त्वरित Google खोज यहां एक हाउटो के
stolzem

1
क्या आप अपना प्रश्न स्पष्ट कर सकते हैं?
रोमेन हिप्पो

स्रोत निर्देशिका और चलाने के आदेश पर जाएँ: - javac * जावा && JarName.jar * .class CVF जार
भड़कीले

जवाबों:


104

एक कमांड प्रॉम्प्ट खोलें।

उस निर्देशिका पर जाएं जहां आपके पास आपकी .java फाइलें हैं

एक निर्देशिका बनाएँ

कमांड लाइन से जावा संकलन चलाएं

javac -d ./build *.java

यदि कोई त्रुटि नहीं है, तो निर्माण निर्देशिका में आपको अपना वर्ग वृक्ष होना चाहिए

बिल्ड डायरेक्टरी में जाएं और ए

jar cvf YourJar.jar *

प्रकट चेक जार कमांड लाइन स्विच जोड़ने के लिए


मैंने कमांड लाइन से संकलन करने की कोशिश की है, लेकिन मुझे एक त्रुटि मिलती है: Frame1.java:23: पैकेज oracle.jdeveloper.layout मौजूद नहीं है मैं इसे कैसे हल करूं? नौसिखिया सवालों के लिए क्षमा करें ...
user1303007

आपको अपनी कक्षाओं में उन सभी पुस्तकालयों का जिक्र करना होगा, जिनका आप संदर्भ दे रहे हैं। अपने jdeveloper इंस्टॉलेशन के साथ जांचें, कुछ चींटी बिल्ड उदाहरण (build.xml फ़ाइल) और कम से कम कुछ अच्छे ट्यूटोरियल के बारे में होना चाहिए कि Oracle की साइट पर ANT के साथ jDeveloper का उपयोग कैसे करें।
बिगमीक

@ user1303007 यहां एक नज़र डालें oracle.com/technetwork/articles/adf/part4-098813.html
BigMike

1
मैंने अपने जार कमांड में एक विकल्प जोड़ा है प्रकट करने के लिए स्वचालित रूप से मेन-क्लास को जोड़ने के लिए ... jar cfe Main.jar Main *(हालांकि मैं भ्रमित हो गया हूं, मुझे आउटपुट फाइल के नाम के बाद मेन-क्लास का नाम
डालना है

32

बस कमांड लाइन के साथ:

javac MyApp.java
jar -cf myJar.jar MyApp.class

सुनिश्चित करें कि आईडीई कमांड लाइन टर्मिनल का उपयोग करने से बचें


11
उपरोक्त काम किया गया, हालाँकि मुझे .classmyApp निर्दिष्ट करने की आवश्यकता थी। तो यह थाjar -cf myJar.jar myApp.class
Navigatron

3
वर्तनी की त्रुटियां यहाँ भी हैं, और यह मानता है कि कोई पैकेज स्टेटमेंट नहीं है। पर्याप्त नहीं है।
user207421

14

ठीक है यह वह उपाय है जिसे मैं खोजना पसंद करूंगा, इसके बजाय यहां मैं इसे लिखूंगा:

पहले .java फ़ाइल के लिए परिभाषित पैकेज के अनुरूप निर्देशिका संरचना बनाएं, अगर यह my.super.application है तो निर्देशिका "my" और इसके अंदर "सुपर" और इसके अंदर .java फ़ाइल "App.java" बनाएँ।

फिर कमांड लाइन से:

   javac -cp /path/to/lib1.jar:/path/to/lib2.jar path/to/my/super/App.java

उपरोक्त सूचना में कई लाइब्रेरी शामिल होंगी, यदि विंडोज़ के तहत "," कई फ़ाइलों को अलग करने के लिए अन्यथा GNU / लिनक्स उपयोग के तहत ":" जार फ़ाइल बनाने के लिए

   jar -cvfe App.jar App my/app/

ऊपर एप्लिकेशन को मुख्य वर्ग के रूप में इंगित करता हुआ इसके अनुरूप मेनिफेस्ट के साथ एप्लिकेशन बनाएगा।

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

आप इसके बजाय कर सकते हैं:

  1. जार फ़ाइल के रूट फ़ोल्डर में मैन्युअल रूप से लाइब्रेरीज़ निकालें
  2. Netbeans जैसे IDE का उपयोग करें और जार के अंदर पुस्तकालयों को निकालने के लिए nbproject / build-impl.xml के पोस्ट-जार अनुभाग के अंदर एक नियम डालें। निचे देखो।
<target name="-post-jar">
        <!-- Empty placeholder for easier customization. -->
        <!-- You can override this target in the ../build.xml file. -->
  <jar jarfile="${dist.jar}" update="true">  
            <zipfileset src="${dist.jar}" includes="**/*.class" />  
            <zipfileset src="${file.reference.iText-1.0.8.jar}" includes="**/*"/>
      <zipfileset src="${file.reference.itextpdf-3.2.1.jar}" includes="**/*"/>
  </jar>
    </target>

file.reference नाम प्रोजेक्ट के अंदर पाए जाते हैं। Netbeans IDE में लायब्रेरीज़ जोड़ने के बाद फ़ाइल फ़ाइल।


9

अक्सर आप एक प्रकट निर्दिष्ट करना चाहेंगे, जैसे:

jar -cvfm myJar.jar myManifest.txt myApp.class

जो पढ़ता है: "वर्बोज़ जारफिलनेम मैनिफ़ेस्टफिलनेम बनाएँ", इसके बाद आप जिन फाइलों को शामिल करना चाहते हैं। Verbose का अर्थ है कि यह क्या कर रहा है के बारे में संदेश मुद्रित करें

ध्यान दें कि आपके द्वारा आपूर्ति की जाने वाली मेनिफ़ेस्ट फ़ाइल का नाम कुछ भी हो सकता है, जैसा jarकि स्वचालित रूप से इसका नाम बदलकर जार फ़ाइल के भीतर सही निर्देशिका में डाल देगा।


6

यह बिना टर्मिनल के सीधे IDE से किया जा सकता है। उदाहरण के लिए नेटबीन्स।

  1. पैकेज के साथ एक अलग प्रोजेक्ट बनाएं (प्रोजेक्ट बनाएं - जावा - जावा क्लास लाइब्रेरी)।
  2. अपनी .java कक्षाएं वहां लगाएं।
  3. इस परियोजना का निर्माण।
  4. अपने प्रोजेक्ट फ़ोल्डर में जाएं और वहां बिल्ड और डिस्टर्ब फोल्डर ढूंढें।
  5. अपने दूर फ़ोल्डर में .jar फ़ाइल खोजें।
  6. अपनी अन्य परियोजना प्राप्त करें और प्रोजेक्ट पुस्तकालयों में इस .jar फ़ाइल को जोड़ें।
  7. अब आप इस लाइब्रेरी और इसके तरीकों को सीधे कोड से रेफर कर सकते हैं, यदि आयात स्वचालित रूप से आपके लिए किया जाता है।

3

यहाँ यह करने का एक और फैंसी तरीका है:

$ ls | grep .java | xargs -I {} javac {} ; jar -cf myJar.jar *.class

जो ls | grep .javaआपकी वर्तमान निर्देशिका से सभी .java फाइलों ( ) को पकड़ लेंगे और उन्हें .class ( xargs -I {} javac {}) में संकलित करेंगे और फिर पहले संकलित कक्षाओं ( jar -cf myJar.jar *.class) से जार फ़ाइल बनाएँ ।


2

शायद अपने जावा कोड से एक JAR संकलित करने का सबसे शुरुआती अनुकूल तरीका है, Netbeans या ग्रहण की तरह एक IDE (एकीकृत विकास वातावरण; अनिवार्य रूप से सिर्फ विकास के लिए उपयोगकर्ता के अनुकूल सॉफ़्टवेयर) का उपयोग करना।

  • एक आईडीई स्थापित करें और सेट अप करें। यहाँ ग्रहण का नवीनतम संस्करण है
  • अपने आईडीई में एक प्रोजेक्ट बनाएं और प्रोजेक्ट फ़ोल्डर के अंदर अपनी जावा फाइलें डालें।
  • IDE में प्रोजेक्ट का चयन करें और JAR के रूप में प्रोजेक्ट को निर्यात करें। डबल चेक करें कि निर्यात करते समय उपयुक्त जावा फ़ाइलों का चयन किया जाता है।

आप यह सब हमेशा कमांड लाइन के साथ बहुत आसानी से कर सकते हैं। सुनिश्चित करें कि आप उसी निर्देशिका में हैं जैसे कि कमांड को निष्पादित करने से पहले लक्षित फ़ाइलों को इस तरह से किया जाता है:

javac YourApp.java
jar -cf YourJar.jar YourApp.class

... क्रमशः "YourApp" और "YourJar" को आपकी फ़ाइलों के उचित नामों में बदलना।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.