2012-11-15 23 views
12

İki sınıfın Sahip Olma ve Sahip Olma Yetkisi var. Dosyalar aynı dizinde. Ben javac -cp . OwningAccessor.java ile OwningAccessor derlemeye çalıştımjavac "sembol bulamıyor" komut satırı ile hata

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); 
    } 
} 

, ben derleme hata var.

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(); 
       ^

Bunun nesi var? Kod tutulması IDE altında iyi derler.

+4

aynı dizinde mi bulunuyorlar? Kaynak yol dizin yapınızı göster –

+0

Aynı dizinde bulunurlar. – prosseek

+0

Hayır repro, burada çalışıyor. Önce Owning.java'yı derlerseniz çalışır mı? –

cevap

15

Tamam,

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

aşağıdaki gibi komut istemine gidin dosyaları dağıtılır koduna sahip düşünelim ve myproject değişiklik dizin. Bir kez aşağıdaki komutu verir:

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

Sadece sınanmış ve gayet iyi çalışıyor. Sizin derlenmiş sınıfları out klasörde yer alacaktır:

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

Derleme bir sınıf, diğer tüm bağımlı sınıfların derlemesini tetikleyecektir. Derleyici otomatik olarak src klasöründe arar.

+0

bu sadece programa uyar, ben neden CMD'de systme.out.print çıkışını alamıyorum? – Faizan

+0

En iyi yol bir kavanoz oluşturmaktır, tüm bunları halledecek ve oldukça basittir. – ramu

12

bunu gibi Owning.java ve OwningAccessor.java hem derleme emin olun:

javac -cp . Owning.java OwningAccessor.java

Tutulmasi çalışır, bu yüzden de sizin için gerekli tüm dosyaları derler.

+0

Java, bağımlılıkları kendi başına mı çözmez? –

+2

Eğer derleyicinizdeki '-sourcepath 'işaretini kullanırsanız –

+0

Kaynakpath hile yapmalı, maalesef makinemde javac olarak bir ACCESS_VIOLATION ile çökertip test edemediğim her şeyi derlemem ... – Kninnug

1

deneyin doğru bir KaynakYolu örnek yapmaya: "temp" olarak

 
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 

Biz kaynaklara alocate ve .java dosyaları nerede -sourcepath ile göstermektedir.