Sì. Funziona su tutte le classi tranne le classi caricate dal programma di caricamento di classe bootstrap. L'altro modo per determinare è:
Class klass = String.class;
URL location = klass.getResource('/' + klass.getName().replace('.', '/') + ".class");
Come notnoop sottolineato getProtectionDomain().getCodeSource().getLocation()
metodo restituisce la posizione del file classe stessa. Per esempio:
jar:file:/jdk/jre/lib/rt.jar!/java/lang/String.class
file:/projects/classes/pkg/MyClass$1.class
Il metodo klass.getResource()
restituisce la posizione del file jar o CLASSPATH
file:/Users/home/java/libs/ejb3-persistence-1.0.2.GA.jar
file:/projects/classes
fonte
2009-12-31 04:04:56
C'è un modo per fare questo da console? Qualcosa come 'java -findjar -cp /some/path/with/libs/*.jar my.java.Class' ->' my.jar'. – kub1x