Неважно существует установка для этого.
Окно-> Поведение-> (Системное меню Появляется на флажке Alt+SPACE)
Запустить java с флагом verbose: class
java -verbose:class com.package.Foo
Чтобы добавить его в файл:
java -verbose:class com.package.Foo > classes-used.txt
и т. д.
Он также перечисляет банку, в которой определены эти файлы:
Например, для этого класса
public class Test {
public static void main( String [] args ) {
}
}
у меня есть (среди прочего)
$ java -verbose:class Test [Opened /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar] [Opened /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar] [Opened /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar] [Opened /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar] [Opened /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar] [Opened /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar] [Loaded java.lang.Object from shared objects file] [Loaded java.io.Serializable from shared objects file] [Loaded java.lang.Comparable from shared objects file] [Loaded java.lang.CharSequence from shared objects file] [Loaded java.lang.String from shared objects file] [Loaded java.lang.reflect.GenericDeclaration from shared objects file] [Loaded java.lang.reflect.Type from shared objects file] [Loaded java.lang.reflect.AnnotatedElement from shared objects file] [Loaded java.lang.Class from shared objects file] [Loaded java.lang.Cloneable from shared objects file] [Loaded java.lang.ClassLoader from shared objects file] [Loaded java.lang.System from shared objects file]
Я полагаю, вы также можете использовать Jakarta Commons Discovery с кодом, подобным следующему:
ResourceNameIterator classes = new DiscoverClasses().findResourceClasses(Object.class);
while (classes.hasNext()) {
String className = classes.nextResourceClass().getName();
Class clazz = classes.nextResourceClass().loadClass();
}
Вы можете сделать что-нибудь в этом роде:
1) Включите подробную загрузку классов, передав -verbose: class
в командной строке Java.
Это напечатает строку вроде
[Loaded org.foo.Bar from file:XYZ.jar]
для каждый класс загружен.
2) Постобработка вывода текстовыми утилитами * nix (grep, sed и т. д.), чтобы найти все экземпляры этих сообщений и извлечь и отсортировать имена классов