2012-08-24 41 views
1

所以我創建了一個名爲util的文件夾,並在其中放置了四個類以及名爲unit10Assignment的程序。我創建了一個包的util和類型「包util的;」在這樣的類代碼的每一個的頂部:java包不存在,壞源文件

package util; 

public class Employee 

然後我寫道:

import util.*; 
import javax.swing.JOptionPane; 

public class unit10Assignment 

在程序的頂部。但是,當我編譯它時,它告訴我。有人知道爲什麼我試着玩弄它,當我輸入import java.util *時它就消失了;相反,但我不確定我的老師想要什麼,因爲她的例子沒有前面的java。

它也說「不好的源文件」「包不包含類Employee」但是,在我輸入包語句之前編譯和運行的所有東西都完美無缺,並且自那時起我沒有對代碼做任何更改。如果我從員工類tho中刪除了包裝語句,則會出現相同的消息,但它會說另一個類不存在。

感謝您的任何幫助 注意:無論我是否把java.util或只是util,這個問題與不良的來源仍然出現。

感謝您的幫助

回答

3

我將讓你有你的項目設置了這樣的假設:

util/ 
    Employee.java 
    unit10Assignment.java 
bin/ 

(如果不是,那也沒關係 - 只要他們在一些文件夾)

軟件包的工作方式是它們是硬盤上的文件夾 - 要導入的軟件包要求您希望導入的文件夾和類都存在這種特定文件夾。這就是爲什麼包很方便 - 你可以有兩個類Employee,並讓他們住在完全不同的位置。 *

下面介紹如何在不使用IDE的情況下將它們編譯爲類似包的結構。將$ HOME替換爲Java類文件夾的完整路徑。

javac -sourcepath $HOME/util -d $HOME/bin *.java 

這裏是你如何運行你的主類:

java -cp $HOME/bin util.$MAIN_CLASS 

什麼這些標誌意味着細目:

  • -sourcepath指示javac的這個特定的目錄中尋找你的源文件。
  • -d指定您的.class文件的輸出目錄。
  • -cp指示java將此文件夾添加到其類路徑中。

*:真的,真的很大的項目通常可以使用與其他類相同的名稱;如果你想使用特定的,你必須使用fully-qualified class name

+0

抱歉,什麼是bin /? –

+0

這只是一個文件夾,很像'util /'。通常這就是二進制文件存在於項目中的地方(因此** bin **)。 – Makoto

0

確保:

  • 文件名中的類名(如Employee.javaEmployee類)
  • 的文件對應的文件夾內根據自己的包(匹配即util

您是否在使用任何IDE?如果不是這樣,那麼使用一個真的會對這種事情有很大的幫助。