2011-10-04 47 views
4

所以我想用我剛剛下載名爲stdlib.jar庫浪費時間(從http://introcs.cs.princeton.edu/java/stdlib/下載)獲取一個圖書館正確導入在NetBeans

所以我加了庫項目,當我考察項目它在netbeans中看起來像這樣: package inspector in netbeans

所以看起來庫的設置是正確的。

但是,在我的項目中,當我嘗試使用其中一個庫類時,它看起來像這樣。

My Custom Audio Player Class

鼠標移動到頂部的import語句,說expected "."
,如果我改變import語句說import stlib.StdAudio它說,庫不存在。
任何機構都知道問題是什麼?

回答

1

這個庫的所有的源代碼(這是非常不尋常:我第一次遇到這樣的)是默認的包,這意味着你不必輸入任何東西如果你的類也是默認包 。只需使用類名即可。

StdAudio.play(tone); 

只要確保它在類路徑中,但我認爲是從NetBeans中查看截圖。


更新:好像我錯了。在頁面的底部,你可以找到這樣的:

問:如果我使用了一個名爲包來構建我的代碼,編譯器不能 再訪問圖書館stdlib.jar。爲什麼不?
A. stdlib.jar中的庫 位於「默認」包中。 在Java中,您不能從命名包訪問默認包中的 類。如果您需要 使用我們的標準庫和命名包,您必須將我們的 庫放在一個包中,就像這個解決方案一樣。

因此,您必須將類複製到您的項目的包musicplayer

+1

哦,那似乎很凌亂。哈哈,我只是這樣做,我猜。非常感謝! – wbarksdale

0

如果您在Coursera上使用Sedgewick教材或算法課程,這可能會有所幫助。

正如上面提到的,stdlib.jar中的庫位於DEFAULT PACKAGE中。在Java中,您無法從命名包訪問默認包中的類。 所以你必須將源文件移動到項目的默認包裝中。這意味着您必須將源musicplayer.java文件從./src/MUSICPLAYER/文件夾直接移至項目的./src文件夾,然後刪除MUSICPLAYER文件夾。你也必須刪除「package MUSICPLAYER;」聲明在源文件的開頭。

基本上這就是你需要做的。現在,當您將源文件移動到默認軟件包並將「stdlib.jar」添加到庫時,從庫中尋址類時不會有任何問題。你不需要任何「導入」的說法。

+0

stdlib現在包含在algs4.jar中,可以從這裏下載http://introcs.cs.princeton.edu/java/code/ –

1

1)擺脫導入聲明。

2)擺脫包裝聲明。

3)將musicplayer.java直接在文件夾/ src目錄

4)右鍵點擊項目菜單庫和添加stdlib.jar