मैं विंडोज पर कमांड लाइन से जावा प्रोग्राम कैसे चला सकता हूं?


216

मैं विंडोज में कमांड लाइन से एक जावा प्रोग्राम को निष्पादित करने की कोशिश कर रहा हूं। यहाँ मेरा कोड है:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class CopyFile
{
    public static void main(String[] args)
    {

        InputStream inStream = null;
        OutputStream outStream = null;

        try
        {

            File afile = new File("input.txt");
            File bfile = new File("inputCopy.txt");

            inStream = new FileInputStream(afile);
            outStream = new FileOutputStream(bfile);

            byte[] buffer = new byte[1024];

            int length;
            // copy the file content in bytes
            while ((length = inStream.read(buffer)) > 0)
            {

                outStream.write(buffer, 0, length);

            }

            inStream.close();
            outStream.close();

            System.out.println("File is copied successful!");

        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

मुझे यकीन नहीं है कि कार्यक्रम को कैसे निष्पादित किया जाए - कोई मदद? क्या यह विंडोज पर संभव है? यह दूसरे पर्यावरण से अलग क्यों है (मुझे लगा कि जेवीएम एक बार लिखा गया था, कहीं भी चलाया जाए)?


33
javac CopyFile.javaऔर फिरjava CopyFile
अल्फासिन

अब मैं कमांड लाइन पर हूं, क्या मुझे अपनी txt फ़ाइलों को उसी फ़ोल्डर में सहेजने की आवश्यकता है, जो उनके लिए प्रोग्राम के लिए है?
एलिजाबेथ टर्नर

क्या पैकेज CopyFileरहता है
MadProgrammer

1
@ एलिजाबेथ टर्नर आपको सबसे पहले यह सुनिश्चित करना होगा कि आपने JRE (Java रनटाइम एनव) स्थापित किया है और यह कि यह हर फोल्डर के लिए सुलभ फॉर्म है (Java / Javac का पथ PATH env वैरिएबल में शामिल है)। फिर मेरे द्वारा ऊपर लिखे कमांड को उसी फ़ोल्डर से चलाएं जिसमें CopyFile.java स्थित है।
अल्फासिन

जवाबों:


240

स्रोत: javaindos

मान लें कि आपकी फ़ाइल C: \ mywork \ में है

रन कमांड प्रॉम्प्ट

C:\> cd \mywork

यह C: \ mywork को वर्तमान निर्देशिका बनाता है।

C:\mywork> dir

यह निर्देशिका सामग्री प्रदर्शित करता है। आपको फ़ाइलों के बीच फ़ाइल नाम। Java देखना चाहिए।

C:\mywork> set path=%path%;C:\Program Files\Java\jdk1.5.0_09\bin

यह उस प्रणाली को बताता है जहां जेडीके कार्यक्रमों को खोजना है।

C:\mywork> javac filenamehere.java

यह javac.exe, संकलक चलाता है। आपको अगली प्रणाली प्रॉम्प्ट के अलावा कुछ भी नहीं देखना चाहिए ...

C:\mywork> dir

javac ने filenamehere.class फ़ाइल बनाई है। आपको फाइलों के बीच फाइलनामे.जाव और फाइलनामे.क्लास देखना चाहिए।

C:\mywork> java filenamehere

यह जावा दुभाषिया चलाता है। फिर आपको अपना प्रोग्राम आउटपुट देखना चाहिए।

यदि सिस्टम को javac नहीं मिल रहा है, तो सेट पथ कमांड की जाँच करें। यदि javac चलता है, लेकिन आपको त्रुटियाँ मिलती हैं, तो अपने जावा पाठ की जाँच करें। यदि प्रोग्राम संकलित करता है, लेकिन आपको अपवाद मिलता है, तो फ़ाइल नाम और वर्ग नाम और जावा हैलोवर्ल्ड कमांड में वर्तनी और कैपिटलाइज़ेशन की जांच करें। जावा केस-संवेदी है!


27
मुद्दा im चल रहा है जब मैं संकलक मैं कोई त्रुटि मिलती है "नहीं मिल या मुख्य वर्ग CopyFile लोड कर सकता है चलाने का प्रयास
एलिजाबेथ टर्नर

2
यदि आपके पास फ़ोल्डर है जिसमें वर्तमान निर्देशिका के रूप में CopyFile.class सेट है, तो बस "जावा-सीपीपी की कोशिश करें। CopyFile" अन्यथा "java -cp FULLPATH CopyFile"
निकोलस कडाकॉम

मैं एक बैच फ़ाइल कैसे बनाऊंगा जो कोड को संकलित करता है और चलाता है, फिर भी यदि यह पहले संकलित किया गया था, तो इसे लॉन्च करें?
एंड्रॉयड डेवलपर

2
क्या गायब है: यदि कक्षा को एक निश्चित पैकेज में घोषित किया गया था, तो आपको .classफ़ाइल को उपयुक्त निर्देशिका संरचना में रखना होगा । वर्तमान निर्देशिका डिफ़ॉल्ट क्लासपाथ है, इसलिए आपको -cp .मैन्युअल रूप से सेट करने की आवश्यकता नहीं है ।
अर्तुर कज्जाका

2
सुनिश्चित करने के लिए, आपको एक पैकेज का उपयोग करना चाहिए: पैकेज mypackage; फिर अपने प्रोजेक्टनेम / पर जाएं। रन जावा
mypackage.Main

108

जवाब पूरा करने के लिए:

  1. जावा फ़ाइल

    TheJavaFile.java
  2. जावा फ़ाइल को एक .class फ़ाइल में संकलित करें

    javac TheJavaFile.java
    • यह एक TheJavaFile.classफाइल बनाएगा
  3. जावा फ़ाइल का निष्पादन

    java TheJavaFile
  4. एक निष्पादन योग्य *.jarफ़ाइल का निर्माण

    • आपको यहां दो विकल्प मिले हैं -

      1. बाहरी मैनिफ़ेस्ट फ़ाइल के साथ:

        • मैनिफ़ेस्ट फ़ाइल बनाएं - MANIFEST.mf

        • मैनिफ़ेस्ट फ़ाइल मेन क्लास की स्पष्ट प्रविष्टि के अलावा और कुछ नहीं है

        • jar -cvfm TheJavaFile.jar MANIFEST.mf TheJavaFile.class

      2. प्रवेश बिंदु द्वारा निष्पादन योग्य:

        • jar -cvfe TheJavaFile.jar <MainClass> TheJavaFile.class
  5. जार फ़ाइल को चलाने के लिए

    java -jar TheJavaFile.jar

5
क्या आप कृपया MANIFEST.mf की सामग्री दिखा सकते हैं, क्योंकि जब मैं "एंट्री पॉइंट द्वारा एक्ज़ीक्यूटेबल" की कोशिश करता हूँ तो यह कहता है कि मुख्य वर्ग नहीं मिल सकता है
पीनी चेनी

@Pini Cheyni यदि आपकी क्लास को मेनक्लास कहा जाता है तो आपकी मेनिफ़ेस्ट फ़ाइल में मेन-क्लास के लिए एक प्रविष्टि होगी: MainClass
jkhosla

@PiniCheyni, निष्पादन योग्य जार बनाने के 2 तरीके यहां अच्छी तरह से बताए गए हैं। docs.oracle.com/javase/tutorial/deployment/jar/appman.html
दिनेश कुमार पी।

बिंदु 3 पर, जब आप java TheJavaFilethats को बराबर कहते हैं java TheJavaFile.class.. तो आप जावा फ़ाइल को निष्पादित नहीं कर रहे हैं, जैसा आपने कहा था। वर्ग फ़ाइल निष्पादित कर रहे हैं। जावा फाइलें ऐसे स्रोत हैं जो निष्पादन योग्य नहीं हैं
user2914191

21

मामले में आपका जावा वर्ग कुछ पैकेज में है। मान लें कि आपका जावा वर्ग नाम ABC.javaमौजूद है com.hello.programs, तो आपको इसे पैकेज नाम के साथ चलाने की आवश्यकता है।

इसे सामान्य तरीके से संकलित करें:

C:\SimpleJavaProject\src\com\hello\programs > javac ABC.java

लेकिन इसे चलाने के लिए, आपको पैकेज का नाम और फिर अपने जावा वर्ग का नाम देना होगा:

C:\SimpleJavaProject\src > java com.hello.programs.ABC

19

एक वर्ग उत्पन्न करने के लिए एक जावा फ़ाइल की शिकायत करें :

javac filename.java

उत्पन्न वर्ग को निष्पादित करें:

java filename

ध्यान दें कि आपका "फ़ाइल नाम" वास्तव में एक वर्ग का नाम है। Java.exe इस नाम के एक वर्ग के लिए हर * .jar फ़ाइल को खोजेगा।
डूमजॉन्की

@Doomjunky आप इसे समझा सकते हैं, कृपया? वह बुरा है या अच्छा? क्या इसे अलग नाम दिया जाना चाहिए?
डेविड फेरेंज़ी रोगोज़न

9

यह आसान है। यदि आपने अपनी फ़ाइल को A.text के रूप में सहेजा है, तो सबसे पहले आपको इसे सेव करना होगा। अब यह एक जावा फ़ाइल है।

अब आपको संकलन करने से पहले cmd को खोलने और आपके लिए A.java फ़ाइल को सेट करने की आवश्यकता है। आप उल्लेख कर सकते हैं इस के लिए।

तब आप कमांड का उपयोग करके अपनी फ़ाइल संकलित कर सकते हैं

javac A.java

फिर इसका उपयोग करके चलाएं

जावा ए

तो यह है कि कैसे आप संकलित करें और cmd में एक जावा प्रोग्राम चलाएं। आप इन सामग्रियों के माध्यम से भी जा सकते हैं जो गहराई से सबक में जावा है। जावा में आपको जिन चीज़ों को समझने की ज़रूरत है, उन्हें शुरुआती लोगों के लिए कवर किया गया है।


7

आप कमांड लाइन में javac का उपयोग करके किसी भी जावा स्रोत को संकलित कर सकते हैं; जैसे, javac CopyFile.java। चलाने के लिए: जावा CopyFile। जब तक आप एक ही निर्देशिका में हैं तब तक आप जावा * .java का उपयोग करके सभी जावा फाइलों को संकलित कर सकते हैं

यदि आपके पास एक समस्या है जिसके परिणामस्वरूप "मुख्य वर्ग को ढूंढ या लोड नहीं किया जा सका" तो आपके पास आपके मार्ग में jre नहीं हो सकता है। इस प्रश्न पर एक नज़र डालें: मुख्य वर्ग को खोज या लोड नहीं कर सका


7

फ़ाइल को "CopyFile.java" कहा जाता है, निम्न कार्य करें:

javac CopyFile.java
java -cp . CopyFile

पहली पंक्ति स्रोत कोड को निष्पादन योग्य बाइट कोड में संकलित करती है। दूसरी पंक्ति इसे निष्पादित करती है, पहले वर्तमान निर्देशिका को वर्ग पथ (बस मामले में) में जोड़ देती है।


3
mycomputer: बिन उपयोगकर्ता $ java -cp। Main.class त्रुटि: मुख्य वर्ग Main.class
chrips

5

जावा 11 के बाद से, javaकमांड लाइन टूल एकल-फ़ाइल स्रोत-कोड को सीधे चलाने में सक्षम है। जैसे

java HelloWorld.java

यह JEP 330: https://openjdk.java.net/jeps/330 के साथ एक वृद्धि थी

उपयोग और सीमाओं के विवरण के लिए, अपने जावा कार्यान्वयन के मैनुअल को देखें, जैसे कि Oracle द्वारा प्रदान किया गया: https://docs.oracle.com/en/java/javase/11/tools/java.html


4

विंडोज 7 पर मुझे निम्नलिखित कार्य करने थे:

तेज तरीका

  1. JDK http://www.oracle.com/technetwork/java/javase/downloads स्थापित करें
  2. विंडोज़ में, "C: \ Program Files \ Java \ jdk1.8.0_91 \ bin" (या जहाँ भी JDK का नवीनतम संस्करण स्थापित है) में ब्राउज़ करें, शिफ्ट को दबाए रखें और खिड़की के भीतर एक खाली जगह पर राइट क्लिक करें और "खोलें" कमांड विंडो यहाँ "और यह आपको सभी BIN टूल्स को कमांड लाइन और एक्सेस प्रदान करेगा। "javac" विंडोज़ सिस्टम PATH पर्यावरण चर में डिफ़ॉल्ट रूप से नहीं है।
  3. फ़ाइल को संकलित करने के तरीके के बारे में उपरोक्त टिप्पणियों का पालन करें ("javac MyFile.java" फिर "java MyFile") https://stackoverflow.com/a/33149828/194872

लंबा रास्ता

  1. JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html स्थापित करें
  2. स्थापित करने के बाद, विंडोज पथ पर्यावरण चर को संपादित करता है और निम्नलिखित को पथ C: \ ProgramData \ Oracle \ Java \ javapath में जोड़ता है। इस फोल्डर के भीतर कुछ मुट्ठी भर जावा निष्पादनयोग्य के प्रतीकात्मक संबंध हैं, लेकिन "जावैक" उनमें से एक नहीं है, इसलिए जब विंडोज कमांड लाइन से "जावाैक" चलाने की कोशिश की जाती है तो यह एक त्रुटि फेंकता है।
  3. मैंने पथ संपादित किया: नियंत्रण कक्ष -> सिस्टम -> उन्नत टैब -> "पर्यावरण चर ..." बटन -> "पथ" तक नीचे स्क्रॉल करें, हाइलाइट करें और संपादित करें -> "C: \ ProgramData \ Oracle \ Java \" को प्रतिस्थापित करें javapath "java BIN फोल्डर के सीधे रास्ते से" C: \ Program Files \ Java \ jdk1.8.0_91 \ bin "।
  4. जब आप अपने JDK इंस्टालेशन को अपग्रेड करते हैं तो यह संभावना टूट जाती है लेकिन आपके पास अब सभी कमांड लाइन टूल्स तक पहुंच है।

  5. फ़ाइल को संकलित करने के तरीके के बारे में उपरोक्त टिप्पणियों का पालन करें ("javac MyFile.java" फिर "java MyFile") https://stackoverflow.com/a/33149828/194872


2

यहां छवि विवरण दर्ज करें चरण 1: पहले चरण में आने वाली संपत्ति का पता लगाएं, जहां आपका अधिकार है। (दाएं क्लिक करते हुए शिफ्ट दबाते हुए)
STEP 2: इस जांच को पूरा करने के लिए उपयोग करें। (फ़ाइल और क्लास के नाम को निष्पादित करने की अनुमति देता है, जिसका नाम Student.java रखा गया है) उदाहरण कार्यक्रम चित्र पृष्ठभूमि में है।

     javac Student.java
     java Student

यहां छवि विवरण दर्ज करें


1

जावा 9 के रूप में, JDK में jshellएक जावा REPL शामिल है।

JDK 9+ binनिर्देशिका को सही तरीके से अपने पथ में जोड़ लेने पर, आप बस कर पाएंगे:

  1. भागो jshell File.java- File.javaअपने पाठ्यक्रम की फ़ाइल जा रहा है।
  2. एक प्रॉम्प्ट खुल जाएगा, आप कॉल करने के लिए अनुमति mainविधि: jshell> File.main(null)
  3. प्रॉम्प्ट को बंद करने और JVM सत्र को समाप्त करने के लिए, का उपयोग करें /exit

JShell के लिए पूर्ण दस्तावेज यहां देखे जा सकते हैं


1

अब (जेडीके 9 के साथ), आप उस निष्पादित को प्राप्त करने के लिए जावा का उपयोग कर सकते हैं। मुख्य वाले "Hello.java" को निष्पादित करने के लिए, कोई भी उपयोग कर सकता है: java Hello.java

आपको अब javac का उपयोग करके अलग से संकलन करने की आवश्यकता नहीं है।


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