2014-02-10 23 views
2

我在Java中創建了一個Pair類(類似於C++對),並且在從不同的java文件引用它時遇到問題。我在一個Java文件中工作,我們把它稱爲fileA在與Pair.class. 相同的目錄中。此外,我已經在兩個文件的頂部寫入package current-directory在同一個目錄中引用一個類的Java爪哇

但是,當我嘗試javac fileA時,我的所有錯誤都是cannot find symbol,小箭頭指向我的自定義Pair類型。

如何獲得java編譯器在fileA中查看Pair.class

感謝所有幫助

+0

在此處附加包結構 –

+0

瞭解java如何打包和導入工作。這有你的問題的解決方案。 – RaviH

+2

如果您正在編譯fileA,則應該使用命令'javac fileA.java'完成,即使用.java擴展名。而運行它使用java fileA沒有任何擴展名。 – technocrat

回答

0

的Java是由一些基本的約定,包括目錄結構如下驅動封裝結構,和java文件被他們定義的類命名。

你應該定義的fileA爲一類fileA.java內,像這樣:

public class fileA { 
    public static void main(String[] args) { 
     Pair p = new Pair(0, 1); 
     System.out.println("a is "+p.a+" and b is "+p.b); 
    } 
} 

和一對相應等級:

public class Pair { 
    public final int a; 
    public final int b; 
    public Pair(int a, int b) { 
     this.a = a; 
     this.b = b; 
    } 
} 

如果從同一個目錄中調用javac的作爲兩個java文件,你不應該在頂部聲明一個包,因爲它們在'默認包'內。因此,上述應該工作。

使用默認包提供了一些便利,但也有一些我不想詳細說明的限制,但是現在您已經瞭解了默認包,您可以查看它。我推薦使用軟件包名稱,就像添加一樣簡單,就像你所做的那樣:

package kugathasan; 

在每個文件的開頭。如果你這樣做,你應該把這兩個文件放在一個名爲kugathasan的目錄中,並從包含kugathasan的目錄調用javac。

1

這是一個包結構問題。您可以通過查看此屏幕截圖瞭解他們在我的IDE和文件夾中的外觀。

enter image description here

,文件夾中,他們看起來是這樣。

enter image description here

而在代碼中,他們有這個包。

package com.jini; 

希望你明白這是如何工作的。

0

technocrat的評論是正確的。

在Java中,開發應用程序時通常不直接使用.class文件。你使用.java文件。您在IDE中創建的軟件包應包含您的.java文件。

因此,不要將Pair.class放入與fileA.java相同的包目錄中,而是將Pair.java放入其中。然後你應該有一個包含fileA的目錄/包。java和Pair.java