Java:测试是否存在包(使用其名称)...

时间:2011-07-29 10:02:10

标签: java reflection

我想测试当前类加载器或系统是否知道特定包。 Package.getPackage(String name)似乎返回null因此我卡住了。 ClassLoader不包含任何相同的方法,因此我卡住了......

我宁愿不在包中加载一个类来测试它是否存在,肯定是更好的方法。

任何指针都会受到赞赏。

2 个答案:

答案 0 :(得分:4)

Package.getPackage(String name)是适合这项工作的工具。确保你已经

  1. 正确输入包名称
  2. 尝试Package.getPackages()查看可用内容
  3. 确保类加载器匹配 - 测试实例getClass().getPackage()然后Package.getPackage(String name)
  4. 该方法仅在当前类加载器中搜索包(如果当前类加载器为null,则搜索System类加载器)。如果当前类加载器中没有加载包中的类,则包不会出现。

答案 1 :(得分:1)

除非已从该包加载类,否则没有简单的方法可以获取有关包是否存在的信息。 Package.getPackage仅在加载了命名包中的类时才起作用。

您的选择是:

  1. 从包中加载一个类,或实例化一个类。
  2. 搜索类路径,并检查类路径中的所有jar / dirs。
  3. 如果代码也使用url类加载器,则第二个选项可能会失败。