2011-07-29 22 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类加载器,则第二个选项可能会失败。

相关问题