检查包是否存在

abs*_*son 11 java reflection

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

noa*_*oah 12

Java只能告诉你它是否可以加载一个类.它无法告诉您包是否存在,因为未加载包,只有类.

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

try {
    Class.forName("javax.servlet.Filter");
    return true;
} catch(Exception e) {
    return false;
}
Run Code Online (Sandbox Code Playgroud)


lex*_*ore 11

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

// Null means the package is absent
getClass().getClassLoader().getResource("javax/servlet");
Run Code Online (Sandbox Code Playgroud)

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


Kyl*_*lar 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");
}
Run Code Online (Sandbox Code Playgroud)

  • 仅当之前从该包加载了类时,这才有效。 (5认同)