2012-11-24 20 views
13

मैं रूट निर्देशिका इस तरह है:javac "प्रतीक नहीं मिल सकता है"

├── classes 
└── src 
    └── vehicles 
     ├── Bicycle.java 
     └── BicycleMain.java 

Bicycle.java

package vehicles; 

public class Bicycle { 

    public int cadence; 
    public int gear; 
    public int speed; 

    public Bicycle(int startCadence, int startSpeed, int startGear) { 
    gear = startGear; 
    cadence = startCadence; 
    speed = startSpeed; 
    } 

    public void setCadence(int newValue) { 
     cadence = newValue; 
    } 
    public void setGear(int newValue) { 
    gear = newValue; 
    } 
    public void setSpeed(int newValue) { 
    speed = newValue; 
    } 
    public int getGear() { 
    return gear; 
    } 
    public int getCadence() { 
    return cadence; 
    } 
    public int getSpeed() { 
    return speed; 
    } 
    public void applyBrake(int decrement) { 
    speed -= decrement; 
    } 
    public void speedUp(int increment) { 
    speed += increment; 
    } 

BicycleMain.java

package vehicles; import vehicles.*; 

public class BicycleMain { 
     public static void main (String args[]){ 
     Bicycle Bike = new Bicycle(10, 20, 1); 
     System.out.println("We have a new bicycle with speed = " +Bike.getSpeed()+", cadence = "+Bike.getCadence()+", gear = "+Bike.getGear()); 
     } } 

मैं साइकिल संकलित। जावा और सफल, लेकिन साइकिल के लिए नहीं। जावा:

symbol : class Bicycle 
location: class vehicles.BicycleMain 
    Bicycle Bike = new Bicycle(10, 20, 1); 
    ^
src/vehicles/BicycleMain.java:6: cannot find symbol 
symbol : class Bicycle 
location: class vehicles.BicycleMain 
    Bicycle Bike = new Bicycle(10, 20, 1); 
        ^
2 errors 

मैं नेटबीन्स और आईटी वर्क्स के साथ इन फ़ाइलों को चलाने की कोशिश करता हूं! लेकिन जब मैं सीएलआई में संकलित करता हूं तो यह क्यों काम नहीं करता है?

+1

क्यों आप अपनी कक्षाओं के लिए स्रोत पोस्ट किया है? यह आपके प्रश्न के लिए प्रासंगिक कैसे है? कृपया पढ़ें [एसएससीसीई] (http://SSCCE.org) – Bohemian

+0

संकलन के लिए आपने किस क्लासपाथ का उपयोग किया है? –

+0

क्या आप 'src' से संकलित हैं? –

उत्तर

7

BicycleMain.java से लाइन को हटाने का प्रयास करें और उन्हें कमांड लाइन में javac के साथ संकलित करें।

जिस तरह से यह क्योंकि आप javac में संकलन कर रहे हैं, जबकि ऐसा होता है कि आप फ़ोल्डर vehicles में हैं और आप BicycleMain.java में एक बयान import vehicles.*; जिसका अर्थ है संकलक करने के लिए वहाँ जो मामले यहाँ नहीं है vehicles फ़ोल्डर के भीतर किसी अन्य फ़ोल्डर vehicles है लिखने तक

+0

यह गलत गलती में संकलित करने के लिए मेरी गलती है, मैंने आयात कमांड को हटा दिया है और "src" में संकलित करने का प्रयास किया है, यह काम करता है! धन्यवाद ... – andrian

16

सबसे पहले, javac का उपयोग कर जावा स्रोत फ़ाइल को संकलित करने के लिए आपको फ़ाइलों को स्पष्ट रूप से संकलित करने की आवश्यकता है।

उदाहरण:

javac PathToSourceFile/FileName.java 

आप path प्रदान करता है, तो स्रोत फ़ाइल वर्तमान कार्यशील निर्देशिका में है नहीं है।

दूसरा, जब भी जावा import abc.xyz.ClassName; से मुठभेड़ करता है तो यह को classpath या वर्तमान कार्य निर्देशिका के संबंध में हल करने का प्रयास करता है।

तो यदि आप वाहन फ़ोल्डर के अंदर हैं और अपने कोड को संकलित करते हैं, तो यह संकलित नहीं होगा क्योंकि यह फ़ोल्डर वाहनों के अंदर फ़ोल्डर वाहनों की तलाश करेगा (जो मौजूद नहीं है!)।

लेकिन, आप यह कर सकते हैं जब वाहन फ़ोल्डर के अंदर

javac -cp ../ BicycleMain.java 

और यह संकलन चाहिए, क्योंकि classpath निर्देशिका (../) पर निर्धारित किया जाएगा वाहनों से युक्त। जो आपके Bicycle वर्ग को हल करेगा।

और फिर

java -cp ../ vehicles/BicycleMain का उपयोग चलाने के लिए।

1

बस शुरुआत से पैकेज लाइन को हटा दें और यह 100% काम करेगा।

फ़ोल्डर में जाओ, जिसमें फ़ाइलें टर्मिनल और प्रकार javac के माध्यम से जमा हो जाती है * जावा

भी कक्षाएं आयात करने के लिए कोई जरूरत नहीं होगी।

+0

केवल मेरे लिए काम किया गया विकल्प। वैसे, मैं विंडोज 7 का उपयोग कर रहा हूँ। – rsb2097

0

मैंने "src" से संकलित इस समस्या को हल किया है।

कुछ इस तरह: javac ./my_folder/my_file.java

सधन्यवाद

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