2015-09-05 29 views
0

我有In包從Princeton加載到我的文件相同的目錄,我編譯它。在java中導入本地庫錯誤

而且,我在我的代碼中使用該包。但是,當我以某種方式使用import In;時,我仍然遇到錯誤?

這個愚蠢的問題的解決方案是什麼?

+0

'In'不是一個包,它是一個類。 –

回答

0

爲了解決這個問題,您需要添加一個與您的包相同的In.java的包聲明(然後簡單地省略您的導入語句),或者(我的建議)您需要添加包聲明到In.java這是不同於您的包(並將其移動到相應的文件夾),然後通過您提供它的包的名稱導入In

爲了使這更加具體:

  1. 添加以下的In.java頂部:

    package edu.princeton.cs.introcs.in; 
    
  2. 然後/移動到相應的「學科/普林斯頓/ CS/introcs在「 目錄。 (創建它,如果它不存在)。

  3. 然後,在你的文件,它的限定名導入:

    import edu.princeton.cs.introcs.in.In; 
    

需要注意的是,在上述兩種情況下,你需要編譯In.java連同您的使用它的代碼(或者你需要首先編譯In.java,並確保它在編譯你的代碼時使用它),並且在運行時,你需要將In.class與你的代碼捆綁在一起(例如在您生成的JAR)或類似地保證在執行編譯代碼時該類的字節碼(包含.class文件或包含.class文件的JAR)位於類路徑中。

+0

爲什麼你推薦第二個?第一個似乎更容易,除非我不正確地理解它... – Candic3

+0

我沒有一個名爲'edu/princeton/cs/introcs/in'的目錄,所以我不知道該放哪裏文件。在過去,我只是將我需要的所有文件放在與我自己寫的文件相同的目錄中。 'edu/princeton/cs/introcs/in'是否是任意的?或者它必須在這條確切的道路上? – Candic3

+0

我建議,因爲包是Java中的隔離單元,通常只有相關的文件應該放在同一個包中。目錄結構必須與包名稱匹配。所有的文件都應該有一個與它們相關的包,並且與你調用Java編譯器的目錄相關的目錄應該與包名相匹配。 –

1

您鏈接到的代碼沒有包

只要刪除import In,並在代碼的某個地方創建一個實例In myIn = new In(myUrl);,你應該很好。

或者,修改「In.java」的副本,並將其與您用於其他代碼的包相同。

請查看代碼中的main(),瞭解如何使用「In」類的示例。

+0

我看到你關於沒有包裹的觀點 - 注意。然而,你的第一個建議(「只要刪除....」)仍然給我一個錯誤,每個「In」實例都表示它找不到符號。 – Candic3

+0

另外,我已經將'In.java'複製到與其餘代碼相同的目錄中(因此我的代碼也是與其他代碼相同的軟件包),並且在包中添加了'package '每個文件的頂部。不知何故,一個錯誤仍然會導致'找不到符號'。 – Candic3