2010-03-30 13 views

risposta

9

Java può dirti solo se è possibile caricare una classe. Non può dirti se un pacchetto esiste o meno perché i pacchetti non sono caricati, solo le classi.

L'unico modo sarebbe provare a caricare una classe da quel pacchetto. . Per esempio, per javax.servlet * si potrebbe fare:

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

Controllare se la confezione è presente come una risorsa:

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

In alternativa, controllare se qualche classe di questo pacchetto può essere caricato tramite Class.forName(...).

4

Se si guarda la documentazione API per l'installazione che avete, vi dirà tutti i pacchetti installati, ad esempio: http://java.sun.com/j2se/1.5.0/docs/api/

Nel codice, si può fare qualcosa di simile:

Package foo = Package.getPackage("javax.servlet"); 

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

Funziona solo se una classe è stata precedentemente caricata da quel pacchetto. – lexicore

+0

Funzionerà solo se una classe da quel pacchetto è stata caricata da ClassLoader. –

+0

JINX! Comprami una coca cola! ;) –

Problemi correlati