2013-02-04 52 views
-2

我具有延伸汽車一類汽車,這是在程序包B如何從另一個包中的文件導入包?

車輛處於包A

這兩個文件都在不同的文件夾

當我編譯主,這不是在一個包,它的確很好,但是當我在創建它之後打印汽車對象時,從車輛繼承的每個變量的值都爲0。

當我在將文件Car移動到編譯後創建的目錄後重新編譯Car時,我無法編譯它。當它在主文件夾中時,我可以編譯它,原因很奇怪。

package Car; 

import Vehicle.*; 

public class Car extends Vehicle 
{ 
    <some code> 
} 

我得到以下錯誤:

「無法找到符號」和「包不存在」

+0

另外我沒有使用super()作爲子對象的構造函數。我試過了,它給了我錯誤(可能是因爲它由於某種原因找不到軟件包)。我手動創建包順便說一句。 – prog

+0

可以分享車輛類別 –

回答

0

那麼你的源代碼樹是什麼樣子? java中的包名稱以小寫字母開頭,並以大寫字母開頭。例如

package mypkg; MyClass類{}

將在一個文件夾,名爲MYPKG和Java類將被稱爲MyClass.java

將其導入另一個類,你會使用:

進口mypkg.MyClass;

總之,就目前而言,嘗試建立你有這樣的事情也許:

的src/ Vehicle.java Car.java

然後更改使Vehicle.java看起來像:

public class Vehicle { 
<your code here> 
} 

和Car.java:

public class Car extends Vehicle { 
<some code> 
} 

然後編譯。

0

這很簡單:文件夾的層次結構必須與包的層次結構完全匹配。因此,假設SRC是所有的源文件的文件夾,樹應該是:

src 
    Main.java 
    Car 
    Car.java 
    Vehicle 
    Vehicle.java 

編譯所有的類文件夾類,你可以使用下面的命令(從src目錄):

src> javac -d ..\classes Main.java Car\Car.java Vehicle\Vehicle.java 

,這將創建下列文件,這也尊重了包層次:

classes 
    Main.class 
    Car 
    Car.class 
    Vehicle 
    Vehicle.class 

然後,您可以從src目錄下執行主類,還是使用

src> java -cp ..\classes Main 

請注意,將類放在默認包中是不好的做法,應該避免。軟件包也應該寫成小寫。

+0

我必須使用命令提示嗎? – prog

+0

不,你當然不需要。但是因爲你正在移動文件,我認爲你沒有使用IDE。根據創建類時輸入或選擇的包,IDE會自動將Java文件放入相應的文件夾中。如果將文件移動到不正確的文件夾,它會產生錯誤。無論您使用哪種工具,您都必須理解上述內容。 –

相關問題