2012-08-22 90 views
5

我有一個名爲"stdlib.jar"的jar文件。這在"Default Package"有很多類。我已將這個stdlib.jar添加到我的NetBeans庫中。並且"Build"-ed它不使用stdlib.jar中的任何內容。因此,stdlib.jar可以添加到我的"./dist/lib"文件夾中。但是我仍然無法使用stdlib.jar 中的任何類我應該怎樣做才能重用stdlib.jar中的任何類?在NetBeans中添加默認包的類

回答

3

對圖書館或甚至項目使用「默認包」包是非常不鼓勵的。 如果您使用默認包,那麼類名稱應該是唯一的,否則它們將覆蓋所有java.lang類。

現在來談談你的情況。如果您已將其添加到庫中,請使用stdlib.jar,那麼您應該可以使用它。 您可以使用您的stdlib.jar從您正在使用它的項目的默認包。除了默認包以外,您不能使用它,因爲它會在該包中搜索您的stdlib.jar類。

希望這可以讓你清楚。謝謝。

+0

但它並沒有解決我的問題。我已將「stdlib.jar」添加到庫中。並試圖訪問其中的一個類。它無法找到該課程。 我能做什麼?請建議一些方法。我知道它可以通過從jar中提取類然後將該java文件添加到源代碼來完成。但我不想這樣做。因爲我可能還需要其他類的「stdlib.jar」。「 –

+1

如果你有默認包中的類,你可以只從默認包中訪問它們,你不能做任何其他的事情.. – pratikabu

+0

謝謝,剛剛解決它。然後看到你的帖子。 –

1

你正在使用Sedgewick的教科書,不是嗎?如果是,請閱讀常見問題解答:

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

同樣的問題在這裏:Getting a library to import properly in netbeans

0

如果您使用的是塞奇威克教科書或算法當然在Coursera,這可能會有所幫助。

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

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