检查包是否存在

13

我该如何检查我的Java安装中是否存在像javax.servlet.*这样的包?


2
简单的方式:导入包,使用它,编译。 - Tom
3个回答

14

Java只能告诉你它是否可以加载一个类。它无法告诉你包是否存在,因为包并没有被加载,只有类被加载。

唯一的方法是尝试从该包中加载一个类。例如,对于javax.servlet.*,您可以这样做:

try {
    Class.forName("javax.servlet.Filter");
    return true;
} catch(ClassNotFoundException e) {
    return false;
}

12

检查包是否作为资源存在:

// Null means the package is absent
getClass().getClassLoader().getResource("javax/servlet");

或者,可以通过Class.forName(...)方法检查是否可以加载此包的某个类。


1
请注意,这种方法不适用于JDK 9及以上版本,因为包被封装在模块中。但是,类没有被封装,所以以下代码可以使用:getClass().getClassLoader().getResource("java/lang/String.class") - gjoranv

5
如果您查看您安装的API文档,它将告诉您所有已安装的软件包,例如:http://java.sun.com/j2se/1.5.0/docs/api/
在代码中,您可以这样做:
Package foo = Package.getPackage("javax.servlet");

if(null != foo){
  foo.toString();
}else{
  System.out.println("Doesn't Exist");
}

5
只有在之前从该包中加载了一个类时,这才有效。 - lexicore
只有在ClassLoader加载了该包中的一个类时,这才能正常工作。 - Rob Heiser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接