2012-02-08 100 views
1

我不知道如何從上面的目錄中導入文件。也就是說,我有一個設置像這樣如何在Java中包含上述目錄中的文件?

directory: MyProject 
    Main.java 
    directory: Other 
     Other.java 

基本上,Main.java在「MyProject的」和Other.java是該項目的根文件夾內的文件夾中。我可以很容易做到

import Other.*; 

獲得在主提供這些文件,但如何讓Main.java可見於Other.java?

import ../Main.java 

顯然這不起作用,但這是我正在尋找的一般功能。有什麼建議麼?我寧願不必使用絕對路徑。謝謝!

編輯:我的意思是不包括進口。抱歉。一直使用C++太多。

回答

0

Java不包含文件。但是,您可以通過使用import語句直接使用簡單名稱的類。

基本上你需要你定義每個(頂層)類的文件。這允許IDE重命名編譯單元,並執行其他重構。除此之外,它可以讓您輕鬆地在正確的位置添加代碼。

Java那樣使用包創建命名空間。包本身是完全獨立的名稱空間。儘管名稱空間似乎是一個樹形結構,但在Java中,每個包實際上都不與任何其他包相關。因此,您不能將其用作文件夾結構,不允許使用..。一旦引入「超級套餐」,這可能會改變。

Java的import語句看起來很像#include,但名稱的改變是經過深思熟慮的:不是抓住了文件,使已知該文件的定義,它只是一個簡單的更容易引用類的聲明和接口。它除了給一個班級縮短名字(或者對於import static,常數和其他static成員)沒有其他影響。

大部分時間使用反映包名稱的文件夾結構來表示頂級類。這使IDE和開發人員可以輕鬆找到表示該類的文件。它還可以很容易地進行版本控制。然而,它不是Java規範本身的一部分; Java源和類的位置未定義。早期的IBM IDE實際上將Java源代碼和類存儲在數據庫中;他們根本沒有使用文件。較新的IDE(例如Eclipse)可能使用不同的源文件夾,例如一個用於單元測試文件,一個用於庫本身。

所以最後,包括包的唯一方法是通過指定導入包的所有類的完整包名,然後一個點,然後導入類或*通配符

import java.util.Vector; 
import java.util.*; 

大多數IDE的將創建這些導入語句,你選擇了正確的類進口(萬一有個教學班,在不同的包中的同名)可能經過。


更多信息可在Java Language Specification (Java 7 version)中找到。

在你的情況下,你已經定義了一個Main類的根或默認包,這是強烈不鼓勵。您可以直接參考Main而不需要任何import聲明。 Other類是在同名的Other包中(在包名中使用大寫字母也非常不鼓勵)。您可以使用import Other.Other來引用它。

+1

雖然您所說的內容沒有任何技術上的錯誤,但您實際上並沒有真正回答「如何在Java中包含上述目錄中的文件?」這個問題。 – 2013-10-01 03:37:08

+0

@MatthewG好的,重寫了答案,謝謝你的擡頭 – 2013-10-01 18:56:53

0

,如果你有文件的項目之外這意味着該文件:

  • 不會因項目被編譯
  • 不會進入罐子
  • 不能在運行時
  • 使用

所以你真的不應該包括它。

要麼將​​其移動到項目,或包括含有該文件相關的項目。

Java不像C++。你通過包名稱來包含。因此,如果頂層文件位於src/aaa文件夾中的項目AAA中,那麼您應該將該項目作爲相關jar包含,並將文件稱爲import aaa.Main

+1

它在項目中。主文件位於項目的「根」目錄中,「其他」是主根目錄內的文件夾 - 即Main.java旁邊的「其他」文件夾。我想將Main.java(在根文件夾中)導入到Other.java(在「其他」文件夾內)。 – Sefu 2012-02-08 22:50:52

1

包括???

Java沒有文件源包含支持,而是使用命名轉換,因此您應該在源文件中使用import命名空間(package)。

您應該定義一個包爲您的主類,然後在其他類導入。

+0

是的,我的意思是進口,很明顯。我會試着製作軟件包,看看我能否以這種方式實現它。 – Sefu 2012-02-08 22:53:05

1

的Main.java在默認的包,這是不可能從其他(命名)封裝

把它放在一個包,並導入正常導入

directory: MyProject 
    directory: base 
     Main.java 
    directory: other 
     Other.java 

(也包名小寫通常)

0

我認爲import Main;應該只是工作。

您應該閱讀java概念類路徑。請看文檔here。將爲您工作的選項是源路徑類路徑

相關問題