我想测试当前的类加载器或系统是否知道一个特定的包。包中。getPackage(字符串名称)似乎返回null,因此我卡住了。ClassLoader不包含任何做同样事情的方法,因此我卡住了…
我不想在包中加载一个类来测试它是否存在,肯定有更好的方法。
Package.getPackage(String name)
是适合这项工作的工具。确保你有
- 正确输入包名
- 试试
Package.getPackages()
看看有什么可用 - 确保类加载器匹配-测试实例
getClass().getPackage()
,然后Package.getPackage(String name)
该方法只在当前类加载器中搜索包(如果当前类加载器为null,则在系统类加载器中搜索包)。如果包中没有类在当前类加载器中加载,则包将不存在。
要获取包是否存在的信息并不容易,除非从该包中加载了一个类。Package.getPackage
仅在已加载命名包中的类时才起作用。
你的选择是:
- 从包中加载一个类,或者实例化一个类。
- 查找类路径,并检查类路径中所有的jar/dir。
如果代码也使用url类加载器,第二个选项可能会失败。