2015-12-02 32 views
1

此代碼編譯罰款:基本的Java - 在文本編輯器中編碼,不能從一個不同的文件中創建新的對象,儘管他們在同一個包「找不到符號」

Person.java

package people; 

class Person{ 
    private String name; 
    private int age; 

public Person(String name, int age){ 
    this.name = name; 
    this.age = age; 

} 

public String getName(){ 
    return name; 
} 

public void setName(String name){ 
    this.name = name; 
} 

public int getAge(){ 
    return age; 
} 

public void setAge(int age){ 
    this.age = age; 
} 

} 

這不:

controller.java

package people; 
public class controller{ 
    public static void main (String[] args){ 

     Person mark = new Person(); 
     mark.setName("Mark"); 
     mark.setAge(24); 

    } 
} 

我得到這個編譯埃羅r:

C:\Program Files\Java\jdk1.8.0_66\classes\controller.java:7: error: cannot find symbol 
     Person mark = new Person(); 
     ^
    symbol: class Person 
    location: class controller 
C:\Program Files\Java\jdk1.8.0_66\classes\controller.java:7: error: cannot find symbol 
     Person mark = new Person(); 
         ^
    symbol: class Person 
    location: class controller 

我研究了這一點,似乎無法弄清楚。我是否試圖在我的controller.java文件中錯誤地實例化對象?謝謝。

+2

你有沒有在你的編譯中設置classpath?你需要將它設置爲包括文件夾人員的位置,包括已編譯的Person.class – Jan

回答

0

您的課Person有一個構造函數,它需要兩個參數,Stringint。但是,您嘗試使用一個構造函數沒有參數創建Person對象:

Person mark = new Person(); 

您需要的參數傳遞給構造函數:

Person mark = new Person("Mark", 24); 

Ofcourse你不需要調用在那之後,再有set...()方法。

Java編譯器會自動創建一個在類中沒有參數的構造函數,但前提是您沒有在類中明確添加任何構造函數。

+0

我也嘗試過,我得到相同的「無法找到符號」錯誤。 – Logan

+0

我所描述的是你必須修復的一件事情。如果你仍然得到錯誤,那麼這是不正確的。有一件事是:如果你把類放在一個包中,他們必須在一個與包結構匹配的目錄中。您的文件必須位於名爲'people'的目錄中。你引用的命令表明你沒有這樣做。 – Jesper

+0

@Jasper是對的!先修復你的代碼!從Person.java中刪除你的顯式構造函數,然後使用'javac Person.java controller.java'編譯 – Mil4n

0

從源根運行編譯器。您必須位於包含「人物」文件夾匹配包裝商名稱的文件夾中。

例子。在Java文件 「d:\ 2 \人」,如果當前文件夾是 「d:\ 2 \人」,並且在運行

"C:\Program Files (x86)\Java\jdk1.8.0_60\bin\javac.exe" controller.java 

那麼你會得到你描述的錯誤。

但是,如果你改變當前文件夾 「d:\ 2」,並運行

"C:\Program Files (x86)\Java\jdk1.8.0_60\bin\javac.exe" people\controller.java 

都將被編譯。不要忘記修復你的構造函數。

+0

我有我的類路徑中包含'people'文件夾的目錄,我是否也需要將'people'文件夾添加到我的類路徑? – Logan

相關問題