2012-11-15 10 views
12

के साथ त्रुटि "प्रतीक नहीं मिल सकता" त्रुटि मेरे पास दो वर्ग हैं और मालिकाना सहायक है। फाइलें एक ही निर्देशिका में हैं।javac कमांड लाइन

public class Owning { 
    String _name = ""; 
    public void printBanner() 
    { 
    } 
    public void printOwning(double amount) 
    { 
     printBanner(); 

     //print details 
     System.out.println("name:" + _name); 
     System.out.println("amount:" + amount); 
    } 
} 


public class OwningAccessor { 
    public void access() 
    { 
     Owning o = new Owning(); 
     o.printOwning(500); 
    } 
} 

जब मैं javac -cp . OwningAccessor.java साथ OwningAccessor संकलन करने की कोशिश की, मैं संकलन त्रुटि मिली।

symbol : class Owning 
location: class smcho.OwningAccessor 
     Owning o = new Owning(); 
     ^
OwningAccessor.java:6: cannot find symbol 
symbol : class Owning 
location: class smcho.OwningAccessor 
     Owning o = new Owning(); 
       ^

इसमें क्या गलत है? कोड ग्रहण आईडीई के तहत ठीक संकलित करता है।

+4

क्या वे एक ही निर्देशिका में हैं? अपनी स्रोत पथ निर्देशिका संरचना –

+0

दिखाएं वे एक ही निर्देशिका में हैं। – prosseek

+0

कोई रेपो, यहां काम करता है। यदि आप पहले 'Owning.java' संकलित करते हैं तो यह काम करता है? –

उत्तर

15

ठीक है, मान लीजिए कि आप कोड फ़ाइलों में वितरित रूप

myproject 
├── out 
└── src 
    ├── OwningAccessor.java 
    └── Owning.java 

इस प्रकार है अपने कमांड प्रॉम्प्ट पर जाएं लगता है, और myproject करने के लिए परिवर्तन निर्देशिका। एक बार निम्न आदेश जारी करने के बाद:

javac -d out -sourcepath src src/OwningAccessor.java 

मैंने अभी इसका परीक्षण किया और यह ठीक काम करता है। आपका संकलित कक्षाएं out फ़ोल्डर में स्थित हो जाएगा:

. 
├── out 
│   ├── OwningAccessor.class 
│   └── Owning.class 
└── src 
    ├── OwningAccessor.java 
    └── Owning.java 

संकलन एक वर्ग में अन्य सभी निर्भर वर्गों के संकलन ट्रिगर किया जाएगा। संकलक स्वचालित रूप से src फ़ोल्डर में उनके लिए खोज करेगा। एक सही sourcepath उदाहरण बनाने के लिए

+0

यह सिर्फ प्रोग्राम का अनुपालन करता है, मुझे आश्चर्य है कि मुझे सीएमडी में systme.out.print का आउटपुट क्यों नहीं मिल रहा है? – Faizan

+0

एक जार बनाने का सबसे अच्छा तरीका यह सब का ख्याल रखेगा और काफी सरल है। – ramu

12

सुनिश्चित करें कि आप दोनों Owning.java और OwningAccessor.java संकलन, इसलिए की तरह बनाओ:

javac -cp . Owning.java OwningAccessor.java

ग्रहण आप के लिए सभी आवश्यक फ़ाइलों को संकलित करता है, जिसके कारण वहाँ काम करता है।

+0

क्या जावा अपने आप पर निर्भरता को समझता नहीं है? –

+2

अगर आप अपने संकलक –

+0

में '-sourcepath' ध्वज का उपयोग sourcepath चाल करना चाहिए, दुर्भाग्य से मैं यह javac के रूप में मेरे मशीन क्रैश पर एक ACCESS_VIOLATION के साथ कुछ भी मैं संकलन करने की कोशिश पर परीक्षण नहीं कर सकते यह है ... – Kninnug

1

प्रयास करें:

 
javac -d temp -sourcepath c:\awork\JavaProjects\singleton\src\ c:\JavaProjects\singleton\src\com\company\MySingleton.java 

javac -d temp -sourcepath c:\awork\JavaProjects\singleton\src\ c:\JavaProjects\singleton\src\com\company\Main.java 

"अस्थायी" हम संसाधनों Alocate और -sourcepath साथ से संकेत मिलता है जहां जावा फ़ाइलें हैं।