मैं जावा .class फ़ाइलों को कैसे चलाऊँ?


81

मैंने एक HelloWorld प्रोग्राम संकलित किया है, और मैं इसे चलाने के लिए कमांड प्रॉम्प्ट का उपयोग कर रहा हूं। .Class फ़ाइल का नाम HelloWorld2.class है

फ़ाइल C: \ Users \ Matt \ workspace \ HelloWorld2 \ bin में स्थित है यहां वही है जो मुझे मिल रहा है जब मैं कमांड प्रॉम्प्ट पर जाता हूं, और "Java HelloWorld2" टाइप करें:

C:\Users\Matt>Java HelloWorld2
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld2
Caused by: java.lang.ClassNotFoundException: HelloWorld2
        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: HelloWorld2.  Program will exit.

मैं एक हैलोवर्ल्ड को प्रिंट आउट देखने की उम्मीद कर रहा था। मैं क्या गलत कर रहा हूं? मेरे पास जेडीके स्थापित है।


9
इसहाक के अलावा आपकी समस्या का जवाब। निचले मामले में "जावा" लिखना एक अच्छा विचार हो सकता है क्योंकि ऊपरी मामला केवल एमएस विंडोज पर काम करता है।
हेंड्रिक ब्रम्मनमैन

जवाबों:


95

आपको अपने संकलित वर्ग को खोजने के लिए कक्षापथ सेट करने की आवश्यकता है:

java -cp C:\Users\Matt\workspace\HelloWorld2\bin HelloWorld2


यह मेरी फ़ाइल संरचना में कहीं से भी पूरी तरह से काम करता है। बस संकलित वर्ग के लिए पथ को एक पीपीएम में और फिर संकलित वर्ग के नाम को बिना किसी पथ पर रखें। यदि आप अपने संकलित वर्ग के समान फ़ोल्डर में हैं, तो आप -pp परम के बिना भी इस वर्ग को चला सकते हैं।
वैक्लाव

42

कमांड लाइन से जावा क्लास फाइल चलाने के लिए , सिंटैक्स है:

java -classpath /path/to/jars <packageName>.<MainClassName>

जहां पैकेजनाम (आमतौर पर या तो शुरू होता है com या या org) फ़ोल्डर का नाम है जहाँ आपकी कक्षा फ़ाइल मौजूद है।

उदाहरण के लिए यदि आपके मुख्य वर्ग का नाम ऐप है और आपके ऐप का जावा पैकेज नाम है com.foo.app, तो आपकी क्लास फाइल को com/foo/appफ़ोल्डर में होना चाहिए (प्रत्येक डॉट के लिए अलग फ़ोल्डर), इसलिए आप अपना ऐप निम्नानुसार चलाएं:

$ java com.foo.app.App

ध्यान दें: $ शेल प्रॉम्प्ट का संकेत है, टाइप करते समय इसे अनदेखा करें

अगर आपकी कक्षा में कोई नहीं है package नाम परिभाषित, बस के रूप में चलाने: java App

आप किसी भी अन्य जार निर्भरता कर दिया है तो सुनिश्चित करें कि आप अपने निर्दिष्ट कर classpath किसी के साथ पैरामीटर -cp/ -classpathया का उपयोग कर CLASSPATHचर अपने साथ फ़ोल्डर में जो अंक जार / युद्ध / कान / ज़िप / वर्ग फ़ाइलें। इसलिए लिनक्स पर आप कमांड के साथ उपसर्ग कर सकते हैं: CLASSPATH=/path/to/jarsविंडोज पर आपको सिस्टम चर में फ़ोल्डर को जोड़ने की आवश्यकता है। यदि सेट नहीं किया गया है, तो उपयोगकर्ता वर्ग पथ में वर्तमान निर्देशिका शामिल है (. ) शामिल है।


व्यावहारिक उदाहरण

यह देखते हुए कि हमने मावेन का उपयोग करके नमूना परियोजना बनाई है :

$ mvn archetype:generate -DgroupId=com.foo.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 

और हम से हमारी परियोजना तैयार की है mvn compileमें हमारेmy-app/ dir , यह हमारी कक्षा की फ़ाइल को उत्पन्न करेगा target/classes/com/foo/app/App.class

इसे चलाने के लिए, हम या तो इसके माध्यम से कक्षा पथ निर्दिष्ट कर सकते हैं या -cpसीधे जा सकते हैं, नीचे दिए गए उदाहरण देखें:

$ find . -name "*.class"
./target/classes/com/foo/app/App.class
$ CLASSPATH=target/classes/ java com.foo.app.App
Hello World!
$ java -cp target/classes com.foo.app.App
Hello World!
$ java -classpath .:/path/to/other-jars:target/classes com.foo.app.App
Hello World!
$ cd target/classes && java com.foo.app.App
Hello World!

अपने वर्ग और पैकेज के नाम को दोबारा जांचने के लिए, आप जावा क्लास फ़ाइल डिस्सेम्बलर टूल का उपयोग कर सकते हैं, जैसे:

$ javap target/classes/com/foo/app/App.class
Compiled from "App.java"
public class com.foo.app.App {
  public com.foo.app.App();
  public static void main(java.lang.String[]);
}

नोट: javapयदि संकलित फ़ाइल को बाधित किया गया है तो काम नहीं करेगा।


2

यह बहुत सारी चीजों का मतलब हो सकता है, लेकिन सबसे आम यह है कि फ़ाइल में निहित वर्ग का नाम फ़ाइल के समान नहीं है। इसलिए, जांचें कि क्या आपकी कक्षा को HelloWorld2 भी कहा जाता है।


0
  1. उस पथ पर जाएं जहां आपने जावा फ़ाइल को सहेजा है जिसे आप संकलित करना चाहते हैं।
  2. टाइप करें cmd टाइप करके और एंटर दबाएं।
  3. कमांड प्रॉम्प्ट डायरेक्टरी जैसे पाथ फाइल को पॉप अप करेगी C:/blah/blah/foldercontainJava
  4. दर्ज javac javafile.java
  5. एंटर दबाए। यह स्वचालित रूप से जावा क्लास फ़ाइल उत्पन्न करेगा

-3

आपको java को लोअर केस में रखना होगा और आपको .class को जोड़ना होगा!

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