2010-06-09 16 views
29

नहीं मिला मैं निम्नलिखित फ़ोल्डर C:\Program Files\Java में जावा 1.7.0 स्थापित किया। मेरे ऑपरेटिंग सिस्टम विंडोज एक्सपी (संस्करण 2002) सेवा पैक के साथ है 3.मुख्य वर्ग हैलोवर्ल्ड

वातावरण चर जो मैं सेट कर रहे हैं:

  • CLASSPATH: C:\Program Files\Java\jdk1.7.0\jre\lib\rt.jar;

  • पथ:C:\Program Files\Java\jdk1.7.0\bin;

  • JAVA_HOME: C:\Program Files\Java;

मैंने यहां कक्षा के नाम प्रस्तुत किए हैं जो मेरे सिस्टम में हैं।

import java.io.*; 

class HelloWorld 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("Hello World!"); 
    } 
} 

जब मैं javac HelloWorld.java का उपयोग कर यह ठीक संकलन है संकलन कर रहा हूँ:

अगला मैं एक कार्यक्रम, HelloWorld.java लिखा था।

लेकिन उसके बाद मैं java HelloWorld जारी मैं नीचे त्रुटि का सामना कर रहा हूँ:

Error: Could not find main class HelloWorld 
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld 
     at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:198) 

Caused by: java.lang.ClassNotFoundException: HelloWorld 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:299) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:288) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:287) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:422) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:325) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:355) 
     at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:195) 

चारों ओर खोज का एक सा बाद, मैंने पाया है कि कुछ वातावरण चर में गलत हो सकता है। मैंने उस के साथ खेलने की कोशिश की लेकिन कोई भाग्य नहीं।

मैंने मशीन को भी दोबारा शुरू किया और फिर मैंने दौड़ने की कोशिश की लेकिन उसी भाग्य के साथ।

+0

केवल एक अनुस्मारक है: jdk 7 अभी तक आधिकारिक रूप से स्थिर नहीं है। तो अगर कुछ मज़ेदार है तो हमेशा ध्यान रखें कि आप jdk 6 के साथ पुन: संकलित करना चाहेंगे। –

+0

जानकारी के लिए धन्यवाद – Newbie

+0

जावा 7 के एक निरंतर संस्करण का उपयोग करने के बजाय, यहां डाउनलोड करें और जेडीके 6 का उपयोग करें: http: //java.sun। com/javase/डाउनलोड/index.jsp – Jesper

उत्तर

24

आप एक क्लासपाथ सेट नहीं कर रहे हैं जिसमें आपकी संकलित कक्षा शामिल है! java कोई कक्षा नहीं मिल सकती है अगर आप इसे नहीं कहें कि कहां देखना है।

java -cp [compiler outpur dir] HelloWorld 

संयोग से आपको क्लासस्पैट को आपके द्वारा किए गए तरीके को सेट करने की आवश्यकता नहीं है। जो वर्तमान निर्देशिका है क्या है,:

33

यह बताओ जहां वर्ग के लिए देखने के लिए "।":

java -classpath . HelloWorld 

इस मामले

+0

वाह, जादू का प्रयास करें! मैं बिना किसी परिणाम के चारों ओर गड़बड़ कर रहा हूँ, लेकिन यह तुरंत काम किया! आपका बहुत बहुत धन्यवाद! – Melsi

+0

@unbeli मुझे एक ही समस्या थी, और आश्चर्यजनक रूप से यह हल हो गया। मैं सिर्फ उत्सुक हूँ। मैं Lynda.com जावा ट्यूटोरियल देख रहा हूं और मैं उसके जैसा ही काम करता हूं, उसके काम (वह केवल जावा हैलोवर्ल्ड में टाइप करता है), मेरा नहीं (मुझे यह समस्या थी)। ऐसा क्यों है? उन्होंने ऐसा क्यों किया है ताकि "टाइप" न हो। धन्यवाद। – balboa

1

JAVA_HOME में JAVA_HOME या CLASSPATH स्थापित करने के लिए कोई ज़रूरत नहीं आवश्यक नहीं है यदि आप कमांड लाइन से जावा और जावैक शुरू करते हैं। लेकिन JAVA_HOME को अपने मामले में असली जेडीके निर्देशिका, C:\Program Files\Java\jdk1.7.0 पर इंगित करना चाहिए।

मैं बिल्ड स्क्रिप्ट के बाहर CLASSPATH पर्यावरण चर का उपयोग कभी नहीं करता, विशेष रूप से वैश्विक परिभाषित नहीं। -cp ध्वज बेहतर है। लेकिन आपके मामले में, क्योंकि आपको अतिरिक्त पुस्तकालयों की आवश्यकता नहीं है (rt.jar गिनती नहीं है), आपको क्लासपाथ घोषणा की आवश्यकता नहीं होगी। एक लापता -cp एक -cp . के बराबर है और आपके द्वारा यहां की जरूरत है)

HelloWorld वर्ग public के रूप में घोषित किए जाने की आवश्यकता है। यह वास्तव में आपकी समस्याओं का कारण हो सकता है। (मैं बहुत यकीन था, कि एक स्रोत फ़ाइल एक पब्लिक क्लास की जरूरत है ... या यह सबसे पर एक पब्लिक क्लास था?)

+0

'हैलोवर्ल्ड' सार्वजनिक नहीं है इस समस्या का कारण नहीं है। इसके अलावा, यह सही है। –

4

आप या तो जोड़ना चाहते हैं "।" वर्तमान क्लास को निर्दिष्ट करने के लिए अपने क्लासस्पैट पर, या इसे अविश्वसनीय तरीके से रन टाइम पर मैन्युअल रूप से जोड़ें।

5

जावा नहीं ढूंढ रहा है कि आपकी संकलित कक्षा फ़ाइल (HelloWorld.class) कहां है। यह CLASSPATH पर्यावरण चर में निर्देशिकाओं और JAR-फ़ाइलों का उपयोग करता है, यदि कोई -cp या -classpath विकल्प java.exe चलाते समय दिया जाता है।

आपको CLASSPATH में rt.jar की आवश्यकता नहीं है, इन्हें केवल जावा के पुराने संस्करणों के लिए आवश्यक था।

CLASSPATH:.;C:\...\some.jar

वर्तमान निर्देशिका इंगित करने के लिए CLASSPATH चर करने के लिए,; आप अपरिभाषित छोड़ सकते हैं और वर्तमान कार्यशील निर्देशिका का उपयोग किया जाएगा, या बस . (एक बिंदु) जोड़ने के लिए, के द्वारा अलग '' वैसे ही जैसे कुछ तीसरे पक्ष के उपकरणों के लिए

java -cp . HelloWorld 

और, जैसा कि एंड्रियास लिखा था, JAVA_HOME जावा की जरूरत नहीं है,:

वैकल्पिक रूप से आप -cp या -classpath विकल्प का उपयोग कर सकते हैं चींटी (लेकिन सही स्थान पर इंगित करना चाहिए)।

10

बस पर्यावरण चर से अपने "क्लासपाथ" को हटा दें। फिर दौड़ने का प्रयास करें:

java HelloWorld 

यह ठीक काम करना चाहिए।

1

मुझे एक ही समस्या थी। शायद, समस्या यह है कि आपने कक्षा को विभिन्न जावा संस्करणों के साथ संकलित और निष्पादित किया है।

सुनिश्चित करें संकलक के संस्करण आदेश "जावा" रूप में ही है:,

javac -version 

java -version 

लिनक्स में उपयोग करने

sudo अद्यतन-विकल्प --config जावा

जावा के संस्करण को बदलने के लिए

2

डाल दिया। शुरुआत में क्लासपाथ मूल्य पर .. यह काम करना शुरू कर देगा ... ऐसा इसलिए होता है क्योंकि यह क्लासपाथ में क्लास फ़ाइल की खोज करता है जो पथ चर में उल्लिखित है।

1

मैं भी एक ही समस्या का सामना करना पड़ा है ....

वास्तव में इस समस्या तथ्य यह है कि अपने कार्यक्रम .class फ़ाइलों को निर्देशिका में बचाया नहीं गया है की वजह से उठाया है। अपने पर्यावरण चर से अपने क्लासस्पैट को हटाएं (आपको सरल जावा प्रोग्राम के लिए क्लासपाथ सेट करने की आवश्यकता नहीं है) और cmd प्रॉम्प्ट को फिर से खोलें, फिर संकलित करें और निष्पादित करें।

यदि आप ध्यान से देखते हैं कि आपकी .class फ़ाइल उसी स्थान पर सहेजी जाएगी।(मैं एक विशेषज्ञ नहीं हूँ, मैं भी बुनियादी programer हूँ कि मेरे वाक्यों में किसी भी गलती है कृपया इसे अनदेखा :-))

0

ऐसा लगता है कि आप सभी सेटअप ठीक से किया था, लेकिन एक ऐसा क्षेत्र है हो सकता है, जहां यह हो सकता है समस्या

अपने "क्लासस्पैट" चर के मान की जांच करें और सुनिश्चित करें कि आपने रखा है;

नोट: ; एंड सेपरेटर के लिए है। अंत में मौजूदा पथ सहित

संबंधित मुद्दे