2012-08-12 28 views
6

我已經將algs4.jar文件作爲引用庫導入,如上所示。似乎都很好,但我似乎無法使用或訪問庫中的任何類。如何在Eclipse中引用庫中使用類

是否有我缺少的進口聲明?

圖片參考:

注意如何,我試圖使用從引用的庫BinarySearch,但它不提供我使用或導入它的選項。

+1

你可以做'ctrl + shift + o'和eclipse將添加必要的導入。從你的錯誤看來,你在構建路徑中缺少包含'BinarySearch'類的jar。 – CoolBeans 2012-08-12 18:36:49

+3

我有同樣的問題...與相同的algs4.jar :)) – 2012-08-23 21:21:13

回答

6

我不確定,我沒有試過這個。儘管有些解釋。

這是一個標準庫存呢或是由他人自己創建的並給過您的?

問題是類BinarySearch是在default包。你將無法導入它。如果這個庫是由您或您的任何朋友創建的,您需要讓您的朋友將所有類從默認包移到一個好的名稱空間,然後重新創建該jar。

如果類是可訪問的,ctr + shift + o應導入類。

+0

這就是我開始想。所以我解壓縮的jar添加到一個包。現在我可以使用一個導入語句(「com.package。*」),我甚至可以創建一個新的對類的引用(「BinarySearch bs = new BinarySearch()」),但是在運行時我得到一個ClassNotFoundException。 – jeffstern 2012-08-13 02:51:16

+0

此外,我也得到這個錯誤信息:'線程中的異常'主要「java.lang.NoClassDefFoundError' – jeffstern 2012-08-13 02:54:11

+0

@jeffstern - 你不能僅僅解壓縮和移動'.class'文件,你需要源代碼,對於每個'.java'文件,改變打包聲明到合適的東西然後以jar的形式導出現有的'.class'文件仍然有舊的包聲明,即'default',將它們移動到所需的包不會改變包聲明,因此導入不起作用 – devang 2012-08-13 02:54:28

1

請注意,jar文件中的類都包含在默認包中。

如果您的課程包含在一個包中,那麼它們將不能直接訪問。

我提交這個答案,因爲我正在採取這些jar文件所屬的算法課程,這是我的程序無法工作的具體原因。

+0

這是正確的答案,'default'包中的類不是無障礙通過其他軟件包中的課程。這與在參考資料庫中無關。 – Sentry 2013-09-23 16:42:42

5

我通過Coursera採用Algorithms類,該類利用了algs4.jar參考庫。

問題:

您遇到的問題是,參考庫位於默認包和源在其中您正在訪問的參考圖書館是沒有的。

解決方案

項目中的所有類都需要在默認包,否則參考圖書館(位於默認包)將不被認可。您的項目類需要位於src目錄中,並且您不應在.java文件的開頭聲明一個包。另外你還需要確保你已經有added the reference libraries to your build path

0

如果要導入類,則需要下載庫的打包版本。請參閱本網頁底部的Q &一節。 http://introcs.cs.princeton.edu/java/stdlib/

問:如果我使用了一個名爲包來構建我的代碼,編譯器將無法再訪問該圖書館stdlib.jar。爲什麼不?答:stdlib.jar中的庫位於「默認」包中。在Java中,您無法從命名包訪問默認包中的類。如果您需要使用帶有命名包的庫,則可以使用打包版本stdlib-package.jar。

0

首先,不能創建BinarySearch(私有構造函數)。使用靜態方法BinarySearch.rank(int key, int[] array)

其次,你只能從默認包

第三怎麼樣Arrays.binarySearch(array, key)訪問BinarySearch的?

相關問題