2011-07-29 35 views
3

我想測試當前類加載器或系統是否知道特定包。 Package.getPackage(String name)似乎返回null,因此我卡住了。 ClassLoader不包含任何方法,因此我卡住...Java:測試是否存在包(使用其名稱)...

我寧可不加載包中的類來測試它是否存在,當然是更好的方法。

任何指針,將不勝感激。

+0

你好PL,thanx支持(: –

回答

4

Package.getPackage(String name)是該工作的正確工具。請確保您已經

  1. 鍵入包的名稱正確
  2. 嘗試Package.getPackages()來看看有什麼可用
  3. 確保類加載器匹配 - 測試例如getClass().getPackage(),然後Package.getPackage(String name)

的方法僅在當前類加載器中搜索包(或者,如果當前類加載器爲空,則爲系統類加載器)。如果在當前類加載器中沒有加載包中的類,那麼該包將不存在。

+0

這似乎是忽略了一個線程上下文類加載器:( –

1

沒有簡單的方法可以獲取有關包是否存在的信息,除非已從該包中加載類。 Package.getPackage只有在命名包中的類已加載時才起作用。

的選項有:

  1. 負載類或實例化一個類,從包中。
  2. 搜索類路徑,並檢查類路徑中的所有jar/dirs。

如果代碼還使用了URL類加載器,則第二個選項可能會失敗。

相關問題